【发布时间】:2016-09-09 04:24:57
【问题描述】:
我有这个位来检索两个用户之间的所有消息:
let user1 = "john"
let user2 = "mark"
let predicateUser1To2 = NSPredicate(format: "user1 == %@", user1)
let predicateUser2From1 = NSPredicate(format: "user2 == %@", user2)
let predicateUser2To1 = NSPredicate(format: "user2 == %@", user1)
let predicateUser1From2 = NSPredicate(format: "user1 == %@", user2)
let predicate1To2 = NSCompoundPredicate(andPredicateWithSubpredicates: [predicateUser1To2, predicateUser2From1])
let predicate2To1 = NSCompoundPredicate(andPredicateWithSubpredicates: [predicateUser1From2, predicateUser2To1])
let predicate = NSCompoundPredicate(orPredicateWithSubpredicates: [predicate1To2, predicate2To1])
let query = CKQuery(recordType: "Chat", predicate: predicate)
但它会引发以下错误。好像评价对了,怎么错了!?
*** 由于未捕获的异常“CKException”而终止应用程序,原因: '无效谓词: (user1 == "john" AND user2 == "mark") OR (user1 == "mark" AND user2 == "john") (错误域=CKErrorDomain 代码=12 "(user1 == "john" AND user2 == "mark") OR (user1 == "mark" AND user2 == "john") 不是比较谓词" UserInfo={NSLocalizedDescription=(user1 == "john" AND user2 == "mark") OR (user1 == "mark" AND user2 == "john") 不是比较 谓词,ck_isComparisonError=true})'
【问题讨论】:
-
最简单的选择当然是执行单独的查询并对它们的结果进行 OR 运算。
标签: ios swift nspredicate cloudkit