2011-07-31 5 views
3

私の予測に何が間違っているのか理解できません。コアデータのSUBQUERY

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

ここで、colorにはcolorID(int)が含まれています。

は、私は次の述語を使用している

all DataItems that contain colorID == 5. 

を取得しようとしました:あなたの助けのための

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

感謝を。

+5

。それをしないでください。コアデータはSQLではありません。エンティティはテーブルではありません。オブジェクトは行ではありません。属性は列ではありません。関係は結合ではありません。コアデータは、オブジェクトグラフ管理システムであり、オブジェクトグラフを永続化することも、永続化しないこともあります。コアデータをSQL用語で考えると、コアデータを完全に誤解して、多くの悲しみと時間を無駄にします。 – TechZen

答えて

7

これにはSUBQUERYは必要ありません。実際には、あなたはほとんど決してが必要ですSUBQUERY; 極端にですが、使用するのが正しい状況を見つけるのはまれです。

あなたは代わりにこれを行うことができます:あなたは明らかにSQLのようにコアデータを使用しようとして

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

これは素晴らしいです。どのようにあなたは一層深く行きますか? A <-->> B <-->> Cとしましょう。複数のAエンティティがあり、Cエンティティにはlabelという属性があります。 label == @ "1234"のCエンティティを含むすべてのAエンティティを検索するにはどうすればよいですか? – zumzum

+3

@zumzumそのためにはおそらく 'SUBQUERY'が必要です。' SUBQUERY(aToBs、$ b、ANY $ b.bToCs.label = '1234')。@ count> 0' –

+0

ありがとう。私はこれに取り組んでいきます。そして、私がやったのと同じようにすぐにどのように進むのか教えてくれます。 SUBQUERIESはiOSで動作しますか? – zumzum