在ios中过滤数组,检查多个属性

Lit*_*T.V 7 iphone search uisearchbar nspredicate ios

我有一系列自定义对象.自定义对象看起来像这样

@interface User : NSObject
@property(nonatomic, strong)NSString *user_Id;
@property(nonatomic, strong)NSString *user_Name;
@property(nonatomic, strong)NSString *user_UserName;
@end
Run Code Online (Sandbox Code Playgroud)

我有数组检查2 properties.That过滤器在我搜索a然后从数组包含它应该得到过滤的用户列表auser_Nameuser_Id.怎么我能做到这一点?对于单个属性,我知道[user_Name]

NSString *predicateString = @"user_Name MATCHES[c] %@";
NSString *matchString =  [NSString stringWithFormat: @".*%@.*",searchText];
NSPredicate *predicate =[NSPredicate predicateWithFormat:predicateString, matchString];
self.searchResults = [userArray filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)

Isa*_*aac 3

您可以使用 来连接谓词条件OR,例如:

NSString *predicateString = @"(user_Name MATCHES[c] %@) OR (user_Id MATCHES[c] %@)";
Run Code Online (Sandbox Code Playgroud)

indexesOfObjectsPassingTest:或者,您可以使用适当的测试块来过滤数组,然后objectsAtIndexes:获取通过测试的对象数组。