2010-04-05 92 views
2

我覺得這應該很簡單,但它的表現很奇怪。NSPredicate在NSFetchedResultsController中扮演着奇怪的角色

我有3個實體,具有這樣

實體A <的關係 - >>實體B < < - >實體Ç

我有一個NSFetchedResults控制器和我試圖過濾實體A使用以下謂詞的結果。

[NSPredicate predicateWithFormat:@"NONE entityB.entityC == %@", self.entityC]; 

當我嘗試運行應用程序時,輸出顯示沒有結果。我可以將謂詞稍微改爲:

[NSPredicate predicateWithFormat:@"ANY entityB.entityC == %@", self.entityC]; 

而且它只顯示我希望過濾的結果。

這是怎麼發生的?

回答

3

我想你可能需要一個SUBQUERY表達:

@"SUBQUERY(entityB, $x, $x.entityC == %@)[email protected] == 0" 

雖然,它可能工作要做到:

@"NOT (ANY entityB.entityC == %@)" 

(注:我沒有測試過第二個選項)

+0

謝謝!這很好用(第一種選擇)。我之前已經在第二個例子中測試了格式,但似乎沒有成功。我從未在文檔中遇到過SUBQUERY,爲了避免將來出現問題,我將不得不進一步閱讀。 – 2010-04-05 20:32:12

+0

@Scott L.不幸的是,SUBQUERY表達式文檔有點分散。您應該始終提交錯誤報告(http://bugreport.apple.com)或在開發中心頁面的底部提交反饋,以瞭解此類文檔的缺陷。工程師非常敏感。祝你工作順利。 – 2010-04-05 20:39:49

+0

感謝您的提示,我會牢記這一點。 – 2010-04-06 02:57:59

相關問題