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

我有一个自定义对象的数组。 自定义对象看起来像这样

@interface User : NSObject @property(nonatomic, strong)NSString *user_Id; @property(nonatomic, strong)NSString *user_Name; @property(nonatomic, strong)NSString *user_UserName; @end 

我必须过滤数组检查2个属性。 user_Name如果我searcha然后它应该得到从数组过滤的用户列表包含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]; 

你可以用OR来join谓词条件 ,比如:

 NSString *predicateString = @"(user_Name MATCHES[c] %@) OR (user_Id MATCHES[c] %@)"; 

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

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(user_Name== %@) || (user_Id== %@), <name>, <id>]; 

尝试使用这个谓词string

 NSString *predicateString = @"user_Name MATCHES[c] %@ OR user_Id MATCHES[c] %@";