我使用 UITextField 作为搜索字段:用户可以输入多个用逗号分隔的搜索值。通过键入,我想在我的 NSArray 中找到与搜索组件之一匹配的每个自定义对象。
我的自定义对象没有属性(可用于搜索)。接收我必须调用的值[myObject fieldForKey:@"username"].value;
。因此,我必须使用[NSPredicate predicateWithBlock]
(或者其他方式对我来说是不可能的)。
我的搜索方法(每当文本字段中的字符发生更改时都会调用):
-(void)searchEntriesWithString:(NSString*)searchString {
NSArray *dataSource = [NSArray arrayWithArray:_allObjects];
searchString = [searchString stringByReplacingOccurrencesOfString:@" " withString:@""];
NSArray *components = [searchString componentsSeparatedByString:@","];
NSMutableArray *predicates = [NSMutableArray array];
for (NSString *value in components) {
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
return ( [[(MyObject*)evaluatedObject fieldForKey:@"username"].wert hasPrefix:value ]);
}];
[predicates addObject:predicate];
}
NSPredicate *resultPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicates];
NSMutableArray searchResultArray = [NSMutableArray arrayWithArray:[dataSource filteredArrayUsingPredicate:resultPredicate]];
}
假设以下数据源:
- 具有用户名“userA”的对象1
- 具有用户名“userB”的对象2
- 具有用户名“userC”的 Object3
使用 '[self searchEntriesWithString:@"userA,userB"]' 调用该方法应该会产生一个包含 Object1 和 Object2 的数组。
但我没有得到这个结果。