2009-11-21 13 views
3

我有一個叫做FObject的超級實體,有幾個子實體,比如Foo1,Foo2和Foo3。我有許多應該顯示關於子實體的不同集合的信息的桌面視圖,例如,一個只顯示Foo2s和Foo3s,而另一個顯示所有子集。如何編寫核心數據謂詞以過濾到特定的子實體類型?

鑑於我在FObject上獲取數據,我該如何編寫謂詞來過濾子實體類型?

我試過「entity.name IN%@」並提供了一個實體名稱列表,但沒有奏效。

或者我應該過濾返回的結果嗎?

或者我應該添加一個屬性來編碼類型並使用「type IN%@」?

+0

我注意到CAST是謂詞格式字符串的保留字。這可能會提供您想要的功能。但是,如何使用它沒有記錄,所以我不會使用它。 – ma11hew28 2012-04-03 16:13:01

回答

0

如果您有不同的表視圖來顯示各種子實體的實例,那麼您大概每個表都有NSArrayControllers,是否正確?如果是這種情況,爲什麼不將數組控制器的實體名稱設置爲所需的子實體名稱?

這是在提取請求中使用的名稱(您指定要提取的實體名稱)。獲取請求中使用的謂詞用於按屬性或關係過濾,而不是實體名稱。

+0

這會給我每個表一個實體。我想要在每個表格中包含特定的實體組合:不是全部,而是全部。 – 2009-11-21 20:28:40

+0

啊,我明白了。由於每個提取請求必須針對特定的實體名稱,因此您無法在提取過程中對其進行過濾。如果他們必須是獨立的實體,我會在內存中過濾它們。或者,你可以將事情弄扁一點,並且簡單*不*具有不同的實體(使用「type」屬性允許在提取期間進行過濾)。我認爲它比單獨的實體名稱*和*添加一個類型屬性要好得多。 – 2009-11-21 20:42:08

+0

我與添加屬性解決方案。它工作得很好。但是我需要保留我的實體層次結構,因爲實體類型之間有許多共同的屬性和關係以及許多不同之處。我正在鏡像一個現有的向我發送數據的面向對象的系統。 – 2009-11-22 05:11:02