在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
然后它应该得到从数组过滤的用户列表包含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];
你可以用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] %@";