【发布时间】:2010-06-13 04:48:17
【问题描述】:
我正在尝试学习如何使用谓词,因此我尝试将以下工作代码替换为 filtersArrayUsingPredicate...
[filteredLocations removeAllObjects];
for (NSString *location in locations) {
NSRange range = [location rangeOfString:query options:NSCaseInsensitiveSearch];
if (range.length > 0) {
[filteredLocations addObject:location];
}
}
相反,我正在尝试....
[filteredLocations removeAllObjects];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains %@", searchText];
[filteredLocations addObjectsFromArray: [locations filteredArrayUsingPredicate:predicate]];
我使用谓词得到的结果与使用 for 循环 rangeOfString 不同。以字符串范围为例,searchText 返回一个 8 项数组,而具有相同值的谓词仅返回 2 个。另一个例子,hono 会在位置数组中找到 honolulu,而它不会使用谓词找到任何东西。
据我了解,SELF 表示正在评估的对象对象,即。位置数组,所以我认为这是正确的语法。
任何帮助将不胜感激
谢谢,约翰
【问题讨论】:
标签: iphone objective-c xcode predicate