我想过滤一组 User
对象(User
有 fullname
、user_id
和其他一些属性..) 根据以某个字符串开头的 firstName
或 lastName
。
我知道如何根据一个条件进行过滤:
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"firstName BEGINSWITH[cd] %@", word];
NSArray* resArr = [myArray filteredArrayUsingPredicate:predicate];
这将给我所有名字以“word”开头的用户。
但是,如果我想要所有 firstName 或 lastName 以“word”开头的用户怎么办?
最佳答案
您可以使用 NSCompoundPredicate
类来创建复合谓词。
NSPredicate *firstNamePred = [NSPredicate predicateWithFormat:@"firstName BEGINSWITH[cd] %@", word];
NSPredicate *lastNamePred = [NSPredicate predicateWithFormat:@"lastName BEGINSWITH[cd] %@", word];
NSArray *predicates = @[firstNamePred, lastNamePred];
NSPredicate *compoundPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:predicates];
NSArray* resArr = [myArray filteredArrayUsingPredicate:compoundPredicate];
这是我喜欢的一种方式。
或者你可以做...
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"firstName BEGINSWITH[cd] %@ OR lastName BEGINSWITH[cd] %@", word, word];
NSArray* resArr = [myArray filteredArrayUsingPredicate:predicate];
两者都行。
关于iphone - 使用 NSPredicate 过滤 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12817340/