0
NSMutableArray *arrayOfPredicates=[[NSMutableArray alloc]init];
[self.attendeeListSet enumerateObjectsUsingBlock:^(id obj, BOOL *stop){
    NSString *userId=[obj userId];
    [arrayOfPredicates addObject:[NSPredicate predicateWithFormat:@"userID == %@",userId]];
}];
NSPredicate *compoundPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:arrayOfPredicates];
[request setPredicate:compoundPredicate];

配列内の複数の userId に対してこの複合述語を設定しており、OR を使用してそれらのユーザー ID からユーザーを取得する必要があります。

上記は機能していませんが、使用してハードコーディングしている場合

 NSPredicate *predicate1=[NSPredicate predicateWithFormat:@"(userID like[cd] %@) 
                            OR (userID like[cd] %@)",@"sheetal2", @"sheetal3"];  
[arrayOfPredicates addObject:predicate1];

今、これは機能しています..誰でも私のコードの問題を教えてもらえますか..

ありがとう

4

1 に答える 1

1

最初のコードでは、述語は==. 2 番目のコードでは、述語でLIKE[cd]. userIDは であるため、述語に値を比較するように指示するには、一般NSStringに を使用LIKEする方が適切ですが、実際の違いは、2 番目のアプローチでは大文字と小文字が区別されず、発音記号が区別されず、最初のアプローチでは完全一致が必要になることです。

于 2013-06-12T06:38:23.983 に答える