NSPredicate与OR返回错误

时间:2015-06-19 22:47:03

标签: ios nspredicate cloudkit

我遇到以下谓词的问题:

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(creatorUserRecordID == %@) OR (toUser == %@)", userId, userId];

当我在查询CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Message" predicate:predicate];中使用它时,我遇到错误:'CKException',原因:'意外表达'。

当我单独使用这两个时:

   NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"(creatorUserRecordID == %@)", userId];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"(toUser == %@)", userId];

然后使用其中一个谓词执行查询,它可以正常工作。我也尝试过使用NSCompoundPredicate但结果总是一样......有什么想法吗?

1 个答案:

答案 0 :(得分:3)

CKQuery的文档列出了所有有效的谓词语法。奇怪的是,在“基本复合谓词”下,它列出了NOTAND&&。未列出OR||,显然不支持CloudKit查询谓词。