2

文字列に従って、または文字列で始まるUserオブジェクトの配列(、、Userおよびその他の属性..)fullnameをフィルタリングしたいと思います。 私は1つの条件に従ってフィルタリングする方法を知っています: user_idfirstNamelastName

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

これにより、「word」で始まるfirstNameを持つすべてのユーザーが表示されます。
しかし、「word」で始まるfirstNameまたはlastNameを持つすべてのユーザーが必要な場合はどうなりますか?

4

2 に答える 2

6

このクラス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];

これは私が好きな方法の1つです。

またはあなたがすることができます...

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

どちらでも動作します。

于 2012-10-10T10:41:06.973 に答える
2

このように使用します:

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"firstName BEGINSWITH %@ OR lastName BEGINSWITH %@", word, word];
NSArray* resArr = [myArray filteredArrayUsingPredicate:predicate];
于 2012-10-10T10:43:29.423 に答える