我有一个包含自定义对象字典的数组。我想在UITableView中过滤该数组以获取搜索功能。这是我使用NSPredicate进行单个对象过滤的代码。
self.searchResultForName = [self.multiPracticeDetailsArray filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
ObjectHolder *obj = (ObjectHolder*)evaluatedObject;
return [obj.Name hasPrefix:searchText];
}]];
使用上面的代码,我只能搜索Name,但我想搜索By Name和ID。此外,搜索将不区分大小写。我怎么能在Objective-C中做到这一点?。请建议任何更好的方法来做到这一点。
答案 0 :(得分:2)
假设您的 ObjectId 属性为NSInteger,您可以尝试按此过滤:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Name =[c] %@ OR ObjectId =[c] %ld", searchText, searchId];
NSArray *filteredArray = [self.multiPracticeDetailsArray filteredArrayUsingPredicate:predicate];
答案 1 :(得分:1)
您是否尝试使用||
OR运算符& lowercaseString
。我没有检查过,只要给出一个try.plz,如果它有正确的语法。
self.searchResultForName = [self.multiPracticeDetailsArray filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
ObjectHolder *obj = (ObjectHolder*)evaluatedObject;
return [[obj.Name lowercaseString] hasPrefix:[searchText lowercaseString]] || [[obj.ID lowercaseString] hasPrefix:[searchText lowercaseString]] ;
}]];