使用Magical Record导入数据时避免重复输入

时间:2012-12-29 20:30:56

标签: core-data magicalrecord

我使用魔法记录来促进核心数据操作。想象一下,我们有一组像这样的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
        }
    ]
}

现在,如果我们使用Magical Record辅助方法:

- (BOOL) MR_importValuesForKeysWithObject:(id)objectData;

+ (id) MR_importFromObject:(id)data;

将导入5个Car条目和5个Brand条目。

然而,在我们的核心数据模型中,Car-Brand关系是多对多关系,而Brand的名称属性应该是唯一的,所以我期待5个Car和Car的条目2个品牌(丰田和大众)。

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

1 个答案:

答案 0 :(得分:6)

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

假设您有Car NSManagedObject与Brand NSManagedObject的关系,您必须将relatedByAttribute设置为nameBrand的关系在用户信息词典中。

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

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

如果您需要其他信息,请与我们联系。