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

Chr*_*hen 7 core-data magicalrecord

我正在使用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
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

- (BOOL) MR_importValuesForKeysWithObject:(id)objectData;
Run Code Online (Sandbox Code Playgroud)

要么

+ (id) MR_importFromObject:(id)data;
Run Code Online (Sandbox Code Playgroud)

它将作为5个Car的条目和5个Brand的条目导入.

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

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

run*_*mad 6

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

假设你有一个CarNSManagedObject与所涉及的关系BrandNSManagedObject,你必须设置relatedByAttributename在关系到Brand在用户信息字典.

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

这意味着您不必使用类别类重写重要内容.

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