簡體   English   中英

CloudKit復合查詢(使用OR查詢)

[英]CloudKit compound query (query with OR)

我想使用帶有兩個字段的OR來​​查詢CloudKit。 但我找不到辦法如何做到這一點。 我做的是:

NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"(creatorUserRecordID == %@)", userId];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"(toUser == %@)", userId];
NSCompoundPredicate *compPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:@[predicate1, predicate2]];
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Message" predicate:compPredicate];

但遺憾的是CKQuery不支持OR查詢(如文檔中所述)我可以通過其他方式實現此效果嗎?

CKQuery支持AND和NOT,所以你可以想象你可以使用簡單的布爾代數來創建一個基於NOT(NOT A AND NOT B)== A OR B這一事實的查詢。但是,文檔具體說:

“在以下情況下不支持NOT復合運算符:

你不能用它來否定AND復合謂詞。“

因此,您必須分別查詢每個ORed謂詞,將它們作為SET保存,然后取兩個集合的交集以獲得最終結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM