2014-12-01 156 views
0

我有一個名爲Image的實體,它與名爲Tag的實體具有多對多關係。 enter image description here從核心數據中的數組中獲取具有關係的實體

假設我有一個標籤實體數組[tag1,tag2,tag3] 如何獲取所有標籤包含數組中所有標籤的圖像?

+0

是否嘗試將謂詞添加到NSFetchRequest中? – 2014-12-01 21:38:45

回答

1

有這些不同的情況:

-1。所有圖片中的任何標籤在列表中

NSPredicate(format:"ANY tags in %@", list) 

-2。所有標籤都在列表中的所有圖像

NSPredicate(format:"SUBQUERY(tags, $tag, $tag IN %@)[email protected] = %d", 
     list, countElements(list)) 

-3。所有圖片中標籤至少包含全部內容(但可能還有更多)

這最後一個問題有兩種可能性。一個涉及子查詢,但您也可以使用複合謂詞來完成。

var subPredicates = [NSPredicate]() 
for tag in tagList { 
    subPredicates.append(NSPredicate(format:"ANY tags = %@", tag)) 
} 
NSCompoundPredicate.andPredicateWithSubpredicates(subPredicates) 
+0

因此,這將過濾掉標籤集中所有tagArray中所有標籤的圖像? – matteok 2014-12-01 22:20:44

+0

不,用'ANY'取回將得到至少有一個標籤在列表中的圖像。我改變了我的代碼,而不是使用'ALL'。現在它將獲取列表中標籤爲* all *的圖像。或者你想要圖像具有完全相同的標籤列表? – Mundi 2014-12-01 23:19:41

+0

我越來越奇怪的行爲。通過使用任何我沒有得到預期的結果,並使用所有我得到以下錯誤:不支持的謂詞所有標記IN – matteok 2014-12-01 23:34:59