【发布时间】:2014-06-27 21:01:29
【问题描述】:
我正在使用 NSPredicate 按州和国家/地区列表过滤 NSDictionary。
所有数据都存储在一个逗号分隔的数组中:@"Alabama"、@"Alaska"、@"Arizona"、@"Arkansas"、@"California"、@"Colorado" 等
但是,有两种情况会发生重复。州“新墨西哥”包含“墨西哥”一词,“阿肯色”包含“堪萨斯”一词。
这是我用来定义谓词的基本代码。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Location contains[c] %@", @"Kansas"];
如何确保“Kansas”不返回带有“Arkansas”的对象? 使用 BEGINSWITH 或 LIKE 不起作用,因为列表以其他状态开始。
谢谢!
【问题讨论】:
-
@"Location == %@"呢? -
我刚试了一下,好像和使用BEGINSWITH或者LIKE一样。不过感谢您的想法。
-
“列表以其他状态开始”是什么意思?运算符 == 或 LIKE 应该选择准确的短语...
-
@Jonah:
==用于精确比较,与 BEGINSWITH 或 LIKE 不同。也许您可以添加一个具体示例,其中==无法按预期工作。如果您只有一个字符串数组,我也不清楚“位置”属性的来源。对于“==”和 LIKE 之间的区别,这可能会有所帮助:stackoverflow.com/questions/14578513/nspredicate-core-data/…。 -
我试过了:NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Location == %@", @"Kansas"];它没有返回任何结果。
标签: ios objective-c filter nspredicate