2016-12-01 16 views
0

せずに別の1つのテーブルと詳細からリストを取得 - 2Dcoredataは、私は2つのエンティティ</p> <p>第1持っている関係

{ 
      "ID": 5777, 
      "Name": "", 
      "EventID": 18341, 
      "ParentID": 19702, 
      "LastModifiedDate": "2016-11-30 09:36:04", 
      "EntityType": 3, 
      "InstanceID": 916787 
     } 

{ 
      "ID": 19702, 
      "Name": "Google", 
      "EventID": 18341, 
      "ParentID": 0, 
      "LastModifiedDate": "2016-12-01 06:20:49", 
      "EntityType": 0, 
      "FileAttribute": "", 
      "InstanceID": 0, 
      "IsFile": false, 
      "ResourceURL": "http://www.google.com", 
      "Taxonomies": "0", 
      "ViewCount": 2 
     } 

今と第二1からフェッチする必要があります1 "ID"はコアデータを使用する最初の "ParentID"です。

MySql query will "SELECT * FROM "tbl_two" WHERE `ID` IN (SELECT `ParentID` FROM "tbl_ONE" WHERE `InstanceID` = '916787' AND `EventID` = '18341') 
+0

これをコアデータで関係なく実行しようとするのは、文字通り、必要以上に困難にすることと同じです。 –

+0

こんにちは、@トムハリントン。私はiosの開発では新しく、コアデータの深さについてほとんど知りません。どのようにすればいいのか教えてください。2つのテーブルには "resource"と "resourcemapping"があります。 "resourcemapping"はユーザーに関連しています –

答えて

0

最初のステップは、それがSQLだようにコアデータについて考える停止することです。それは異なるAPIを持っており、SQLの考え方は貧弱なデザインにつながります。

最も一般的な言葉では、レコードを考えたり、アプリで使用する可能性のあるオブジェクトを考えたり、それらのオブジェクト同士の関係を考えたりしないでください。あるレコードを別のレコードに関連付けるために外部キーを使用する代わりに、オブジェクトプロパティを使用してあるオブジェクトを別のオブジェクトに関連付けます。私はあなたのSQLクエリを行うことができるものから、

は、あなたが

  • 2つのコアデータのエンティティのようなものがResource(あなたの最初のサンプル)とResourceMapping(あなたの第二のサンプル)と呼ばれたいです。
  • Resourceは、タイプResourceMappingmappingのようなプロパティを持っています。
  • IDではなくの関係を使用して、を関連付けるとします。データをリモートサーバーに同期する必要がある場合はIDを保存できますが、通常はコアデータには役立ちません。

あなたのSQLクエリの同等のだろうが、私は思う:

  1. は、その特性の1つ以上に一致するNSPredicateを使用してResource(第1例)の単一のインスタンスを取得します。
  2. そのインスタンスを持っているときは、その関係の値をmapping(またはそれを何とか呼んでいるかどうか)に問い合わせてください。そうすれば、他のエンティティから関連オブジェクトを取得できます。

それ以上に、アップルはextensive, detailed documentation with code samplesを提供してくれます。

関連する問題