在 Objective C 中使用 NSPredicate 过滤自定义对象数组

Filter Array of custom objects using NSPredicate in Objective C

我有一个包含自定义字典的数组 objects.I 想过滤该数组以在 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.Also 搜索将不区分大小写。我如何在 Objective-C 中执行此操作?请建议任何更好的方法来执行此操作。

您是否尝试过使用 || OR 运算符 & lowercaseString

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]] ;
}]];

你可以尝试像这样过滤它,假设你的 ObjectId 属性 是 NSInteger:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Name =[c] %@ OR ObjectId =[c] %ld", searchText, searchId];
NSArray *filteredArray = [self.multiPracticeDetailsArray filteredArrayUsingPredicate:predicate];