7

我正在使用 Magical Record 来促进 Core Data 操作。想象一下,我们有一组这样的 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 个条目导入。

但是,在我们的核心数据模型中,Car-Brand 关系是多对多的,并且 Brand 的 name 属性应该是唯一的,所以我期待 Car 的 5 个条目和 Brand 的 2 个条目(Toyota 和 VW) .

我的问题是如何在使用 Core Data 导入时保持数据的唯一性。这是我可以在核心数据模型中定义的东西,比如唯一属性吗?还是我需要覆盖 Magical Record 的导入方法?

4

1 回答 1

6

您需要告诉 MagicalRecord 什么是唯一标识符。在您的情况下,您没有唯一 ID,但您可能可以使用该name属性。

假设您有一个Car与 NSManagedObject 有关系的BrandNSManagedObject,您必须在用户信息字典中设置relatedByAttributename的关系。Brand

完成后,此 MagicalRecord 将查找具有该属性的任何记录,name如果已存在则使用适当的记录,或者在需要时创建一个。

这意味着您不必使用类别类覆盖重要。

如果您需要更多信息,请告诉我。

于 2013-05-04T18:41:41.910 回答