7

Core Data 操作を容易にするために Magical Record を使用しています。このような json のセットと、まったく同じように定義された Core 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
        }
    ]
}

ここで、Magical Record ヘルパー メソッドを使用すると、次のようになります。

- (BOOL) MR_importValuesForKeysWithObject:(id)objectData;

また

+ (id) MR_importFromObject:(id)data;

Car の 5 エントリと Brand の 5 エントリとしてインポートされます。

ただし、コア データ モデルでは、車とブランドの関係は多対多であり、ブランドの名前属性は一意であると想定されているため、車の 5 つのエントリとブランド (トヨタと VW) の 2 つのエントリが期待されます。 .

私の質問は、Core Data でインポートする際にデータの一意性を維持する方法です。これは、一意の属性のように Core Data モデルで定義できるものですか? または、Magical Record の import メソッドをオーバーライドする必要がありますか?

4

1 に答える 1

6

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

CarNSManagedObject との関係を持つ NSManagedObjectがあると仮定すると、ユーザー情報ディクショナリでとの関係をBrand設定relatedByAttributeする必要があります。nameBrand

この MagicalRecord を完了すると、属性nameを持つレコードが検索され、適切なレコードが既に存在する場合はそれが使用され、必要な場合は作成されます。

これは、カテゴリ クラスで重要をオーバーライドする必要がないことを意味します。

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

于 2013-05-04T18:41:41.910 に答える