簡體   English   中英

核心數據:匹配一對多關系中的多個項目的組合

[英]Core Data: Matching a combination of multiple items in a to-many relation

編輯:忘了提到我后來在 Swift 代碼中過濾掉了帶有不需要顏色的卡片。

因此,這是關於 Core Data 中的多對多關系以及如何為其編寫謂詞的另一個問題。 簡而言之,我想在一對多關系中匹配多個項目的組合。

設置

  1. 五種顏色的顏色表:紅、綠、白、黑、藍
  2. 卡片表,每張卡片與顏色表有一對多的關系

目標

搜索黑色和/或白色的卡片,意思是:

  1. 卡片可能只有黑色
  2. 卡片可能只有白色
  3. 卡片可以是黑白的

迄今為止

最佳結果是(簡化):

NSPredicate(format: "ANY color == Black") // Only black cards, good
NSPredicate(format: "ANY color == White") // Only white cards, good
NSPredicate(format: "ANY color == Black OR ANY color == White") // Only black AND white cards, bad

這里有一篇與 MySQL 相關的非常相似的帖子,以防它有助於進一步澄清問題:

SQL:使顏色表中的顏色可搜索

根據@pbasdf的評論,我提出了以下解決方案(在實際代碼中使用更好的語法):

// Desired colors let includePredicate = NSPredicate(format: “SUBQUERY(color, $C, $C == 'Black' OR $C == 'White').@count > 0”)

// Undesired colors let excludePredicate = NSPredicate(format: “SUBQUERY(color, $C, $C == 'Green' OR $C == 'Red' OR $C == 'Blue').@count == 0”)

// Combined to one predicate let finalPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [includePredicate, excludePredicate]

暫無
暫無

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

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