我有一系列自定义对象。自定义对象看起来像这样
@interface User : NSObject
@property(nonatomic, strong)NSString *user_Id;
@property(nonatomic, strong)NSString *user_Name;
@property(nonatomic, strong)NSString *user_UserName;
@end
我必须过滤数组检查2个属性。那就是我搜索a
然后它应该从a
或user_Name
中获取从数组中包含user_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];
答案 0 :(得分:3)
You can join predicate conditions with OR
,例如:
NSString *predicateString = @"(user_Name MATCHES[c] %@) OR (user_Id MATCHES[c] %@)";
或者,您可以使用indexesOfObjectsPassingTest:
使用适当的测试块来过滤数组,然后使用objectsAtIndexes:
来获取通过测试的对象数组。
答案 1 :(得分:1)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(user_Name== %@) || (user_Id== %@), <name>, <id>];
答案 2 :(得分:1)
尝试使用此谓词字符串
NSString *predicateString = @"user_Name MATCHES[c] %@ OR user_Id MATCHES[c] %@";