Core data 导入具有神奇记录的数据时避免重复条目

Core data 导入具有神奇记录的数据时避免重复条目,core-data,magicalrecord,Core Data,Magicalrecord,我正在使用神奇记录来促进核心数据操作。假设我们有一组这样的json,核心数据模型定义完全相同: { "cars": [ { "name": "Corolla", "brand": { "name": "Toyota" }, "price": 20000 }, { "name": "Pirus

我正在使用神奇记录来促进核心数据操作。假设我们有一组这样的json,核心数据模型定义完全相同:

{
    "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
        }
    ]
}
现在,如果我们使用神奇的记录助手方法:

- (BOOL) MR_importValuesForKeysWithObject:(id)objectData;

它将作为5项汽车和5项品牌进口

然而,在我们的核心数据模型中,汽车品牌关系是一种多对多关系,品牌的名称属性应该是唯一的,因此我预计有5个汽车条目和2个品牌条目(丰田和大众)


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

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

假设您有一辆
Car
NSManagedObject与
Brand
NSManagedObject有关系,您必须在用户信息字典中将
relatedByAttribute
设置为
name

完成此操作后,MagicalRecord将查找具有属性
name
的所有记录,如果已经存在记录,则使用相应的记录,或者根据需要创建记录

这意味着您不必用category类重写important


如果您需要其他信息,请告诉我。

您得到了答案吗?我非常确定您必须基于Marcus S.Zarra的编程解决此问题。根据它,您似乎可以添加一个“relatedByAttribute”键,并将其映射到它应视为键的属性……顺便说一下,为什么是多对多关系?如果您有一辆
汽车
它只能是一个品牌,那么在
品牌
汽车
+ (id) MR_importFromObject:(id)data;