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];

我正在为数组中的多个用户 ID 设置此复合谓词,我需要使用 OR 从这些用户 ID 中获取用户。

以上不起作用,但是当我使用硬编码时

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

现在这正在工作..任何人都可以告诉我的代码有什么问题..

谢谢

4

1 回答 1

1

在您的第一个代码中,谓词使用==. 在第二个代码中,谓词使用LIKE[cd]. 因为userIDis an NSString, usingLIKE通常是告诉谓词比较值的更好方法,但真正的区别在于第二种方法不区分大小写和变音符号,第一种方法需要完全匹配。

于 2013-06-12T06:38:23.983 回答