我需要一些帮助来解决我在使用MagicalRecord数据导入时遇到的问题。我的印象是MagicalRecord能够通过查看主键(relatedByAttribute
)来处理关系映射而不会复制对象。
这是一个简单的JSON:
[
{
parentId: "<unique id>",
parentName : "<name>",
children : [
{
childId: "<unique id>",
childName: "<name>"
},
{
childId: "<unique id>",
childName: "<name>"
}
]
},
{ <another parent with children> }
]
我有一个NSManagedObject Parent
,它与Child
NSManagedObject有很多关系。关系名称为children
,我已将relatedByAttribute
Child
和Parent
分别设置为childId
和parentId
。
当我解析JSON时,Parent
没有重复,它正确检查主键并使用现有对象(如果存在)。但是对于Children
,每次解析JSON时它都会复制对象。如果我单独解析Children
(因此JSON只包含带有子词典的数组),那么正确映射数据并使用数据库中已存在的Children
的现有对象没有问题。
我是否误解并对MagicalRecord如何映射关系抱有错误的期望?目前我已经设置了一个带有'importChildren:`的扩展类,我可以手动处理所有的查找并相应地创建/导入对象。
谢谢!
答案 0 :(得分:11)
我设法解决了这个问题。
我所做的是在relatedByAttribute
关系的用户信息词典中为children
实体添加Child
。
因此,点击关系并将relatedByAttribute
设置为childId
(在我上面的示例中),然后点击左侧的子实体,同时将relatedByAttribute
设置为{{ 1}}在实体本身的用户信息字典中。
这允许魔法记录使用现有对象正确映射或在需要时创建新对象 - 授予ID属性100%唯一!