使用 NSPredicate 过滤 NSArray

2024-04-27

我想过滤一个数组User对象(User has fullname, user_id和一些更多的属性..)根据firstName or lastName以一些字符串开头。
我知道如何根据一种条件进行过滤:

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"firstName BEGINSWITH[cd] %@", word];
NSArray* resArr = [myArray filteredArrayUsingPredicate:predicate];  

这将为我提供名字以“word”开头的所有用户。
但是,如果我希望所有用户的名字或姓氏都以“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];

两者都可以。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 NSPredicate 过滤 NSArray 的相关文章

随机推荐