器阵列中IOS检查多个属性(Filter array in ios checking multipl

2019-08-17 22:41发布

我有自定义对象的数组。 自定义对象这个样子的

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

我有过滤阵列检查2 properties.That是,如果我搜索a从阵列过滤包含用户的,那么它应该得到列表auser_Nameuser_Id 。如何我可以做到这一点? 对于一个单一的财产,我知道[用户名]

NSString *predicateString = @"user_Name MATCHES[c] %@";
NSString *matchString =  [NSString stringWithFormat: @".*%@.*",searchText];
NSPredicate *predicate =[NSPredicate predicateWithFormat:predicateString, matchString];
self.searchResults = [userArray filteredArrayUsingPredicate:predicate];

Answer 1:

你可以加入与谓词条件OR ,如:

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

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



Answer 2:

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


Answer 3:

尝试使用这个谓词字符串

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


文章来源: Filter array in ios checking multiple properties