2012-12-29 3 views
7

私は魔法の記録を使ってコアデータ操作を容易にしています。魔法の記録でデータをインポートするときに重複する項目を避ける

- (BOOL) MR_importValuesForKeysWithObject:(id)objectData; 

または

+ (id) MR_importFromObject:(id)data; 
:私たちは魔法レコードヘルパーメソッドを使用している場合、今

{ 
    "cars": [ 
     { 
      "name": "Corolla", 
      "brand": { 
       "name": "Toyota" 
      }, 
      "price": 20000 
     }, 
     { 
      "name": "Pirus", 
      "brand": { 
       "name": "Toyota" 
      }, 
      "price": 50000 
     }, 
     { 
      "name": "RAV-4", 
      "brand": { 
       "name": "Toyota" 
      }, 
      "price": 30000 
     }, 
     { 
      "name": "Golf", 
      "brand": { 
       "name": "VW" 
      }, 
      "price": 40000 
     }, 
     { 
      "name": "Polo", 
      "brand": { 
       "name": "VW" 
      }, 
      "price": 20000 
     } 
    ] 
} 

:私たちはこのようなJSONのセットを持って、そしてコアデータモデルがまったく同じに定義されて想像してみて

車の5つのエントリとブランドの5つのエントリとしてインポートされます。

しかし、私たちのCore Dataモデルでは、Car-Brandの関係は多対多であり、Brandのname属性はユニークであると考えられているので、Carの5つのエントリとBrandの2つのエントリが必要ですトヨタとVW)。

私の質問は、コアデータをインポート中にデータの一意性を維持する方法です。ユニークな属性のような、コアデータモデルで定義できるものですか?マジカルレコードのインポートメソッドをオーバーライドする必要がありますか?

+0

これについての回答がありましたか? – Fogmeister

+0

私は、Marcus S. Zarraのhttp://forums.pragprog.com/forums/90/topics/2875に基づいてこの問題をプログラム的に解決しなければならないと確信しています –

+0

http://www.cimgf.com/ 2012/05/29/importing-data-made-easy/'relatedByAttribute'キーを追加し、それをキーとして扱うべきプロパティにマップすることができます... – ChickensDontClap

答えて

6

あなたは一意の識別子が何であるかをMagicalRecordに伝える必要があります。あなたの場合、一意のIDはありませんが、おそらくname属性を使用できます。

あなたはBrand NSManagedObjectに関係してCar NSManagedObjectを持っていると仮定すると、あなたはユーザ情報辞書のBrandとの関係にnamerelatedByAttributeを設定する必要があります。

このマジカルレコードは、属性がnameのレコードを検索し、適切なレコードがある場合はそれを使用し、必要に応じて適切なレコードを作成します。

これは、重要度をカテゴリクラスで上書きする必要がないことを意味します。

追加情報が必要な場合はお知らせください。

関連する問題