【问题标题】:NSPredicate with OR returning errorNSPredicate 与 OR 返回错误
【发布时间】:2015-06-19 22:47:02
【问题描述】:

我对以下谓词有疑问:

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

当我在查询 CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Message" predicate:predicate]; 中使用它时,我有一个错误提示:'CKException',原因:'Unexpected expression'。

当我像这样单独使用这两个时:

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

然后使用这些谓词之一执行查询它工作正常。我也尝试过使用 NSCompoundPredicate 但结果总是一样的......有什么想法吗?

【问题讨论】:

    标签: ios nspredicate cloudkit


    【解决方案1】:

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

    【讨论】:

    • 我在文档中找到的是:基本复合谓词 AND、&& 逻辑 AND。或者,||逻辑或。不是, !逻辑非。我有什么问题吗?
    • 好的,知道了。 CKQuery 不允许带有 OR 的谓词,尽管 NSPredicate 允许。我的错。你能提示我如何使用 OR 查询 CloudKit 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    相关资源
    最近更新 更多