2013-02-21 90 views
4

我試圖做一個謂詞來過濾多對多的關係。我有一個消息對象與許多標籤作爲關係。核心數據:多對多謂詞不工作

我可以做到以下幾點:

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"ANY labels.labelId == 4"]; 

,我只會有標籤與labelId 4。但如果我這樣做

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"NONE labels.labelId == 4"]; 

這會給我的每燎消息消息對象我有,即使他們與LabelId有關係4.爲什麼?有人可以幫忙嗎?

回答

10

似乎「核心數據」謂詞中的「無」或「不是任何」無法正常工作。兩個謂詞

NONE labels.labelId == 4 
NOT (ANY labels.labelId == 4) 

實際上會返回相同的結果

ANY labels.labelId != 4 

這不是我所理解的文檔。作爲一種變通方法,您可以使用子查詢:

[NSPredicate predicateWithFormat:@"SUBQUERY(labels, $x, $x.labelId == 4)[email protected] == 0"] 
+0

在我任職的情況,似乎只能是一個問題,在初始獲取,更新用謂詞正確處理......似乎是一個蘋果的錯誤給我。 – BadPirate 2014-11-24 00:57:15

+0

我對'NONE'或'NOT ANY'有同樣的問題。任何想法爲什麼這是? – fabb 2014-12-30 13:55:57

+0

@fabb:不,我不能告訴你*爲什麼*「無」或「不是」不按預期工作。 – 2014-12-30 17:31:39