我使用魔法记录来促进核心数据操作。想象一下,我们有一组像这样的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的导入方法?
答案 0 :(得分:6)
你需要告诉MagicalRecord什么是唯一标识符。在您的情况下,您没有唯一ID,但您可以使用name
属性。
假设您有Car
NSManagedObject与Brand
NSManagedObject的关系,您必须将relatedByAttribute
设置为name
与Brand
的关系在用户信息词典中。
完成此操作后,MagicalRecord将查找具有属性name
的所有记录,并使用相应的记录(如果已存在),或者根据需要创建一个。
这意味着您不必使用类别类覆盖重要内容。
如果您需要其他信息,请与我们联系。