2011-07-31 61 views
3

我不明白我的預測有什麼問題。我有一個數據庫方案:核心數據中的子查詢

DataItem(color_ids) <->> (dataItem)Color 

如果顏色包含colorID(INT)。

我試圖讓

all DataItems that contain colorID == 5. 

我用下一個斷言:

SUBQUERY(color_ids, $sub, $sub.colorID==5)[email protected] > 0 

感謝您的幫助。

+5

你顯然試圖利用核心數據,如SQL。不要這樣做。核心數據不是SQL。實體不是表格。對象不是行。屬性不是列。關係不是連接。核心數據是一個對象圖管理系統,它可能會或可能不會持久化對象圖,並且可能會或可能不會在後臺使用SQL來做到這一點。試圖用SQL語言來思考覈心數據會導致你完全誤解核心數據,並導致很多悲傷和浪費時間。 – TechZen

回答

7

您不需要SUBQUERY。其實你幾乎沒有需要SUBQUERY;它是極其很少發現一種情況,它是正確的使用。

你可以這樣做,而不是:

[NSPredicate predicateWithFormat:@"ANY color_ids.colorID == 5"]; 
+0

這很好。你會如何更深入一層?假設我們有A <-->> B <-->> C.我們有多個A實體,C實體有一個稱爲標籤的屬性。我如何找到包含C標籤== @「1234」的C實體的所有實體? – zumzum

+3

@zumzum爲此你可能需要一個'SUBQUERY',它會是這樣的:'SUBQUERY(aToBs,$ b,ANY $ b.bToCs.label ='1234')。@ count> 0' –

+0

謝謝。我會努力解決這個問題,一旦完成,我會盡快告訴你。 SUBQUERIES可以在iOS上使用嗎? – zumzum