尽管有主键,但MagicalRecord关系映射会复制对象

run*_*mad 5 core-data nsmanagedobject ios magicalrecord

对于我在使用MagicalRecord数据导入时遇到的问题,我需要一些帮助.我的印象是MagicalRecord能够通过查看主键(relatedByAttribute)来处理关系映射而无需复制对象.

这是一个简单的JSON:

[
  { 
    parentId: "<unique id>",
    parentName : "<name>",
    children : [
                  {
                     childId: "<unique id>",
                     childName: "<name>"
                  },
                  {
                     childId: "<unique id>",
                     childName: "<name>"
                  }
               ]
  },
  { <another parent with children> }
]
Run Code Online (Sandbox Code Playgroud)

我有一个NSManagedObject Parent,它与NSManagedObject 有很多关系Child.关系的名字是children和我设置relatedByAttributeChild,并ParentchildIdparentId分别.

当我解析JSON时,Parent它不会重复,它会正确检查主键并使用现有对象(如果存在).但是,Children每次我解析JSON时它都会复制对象.如果我Children单独解析(所以JSON只包含一个带有子词典的数组),它就没有问题正确映射数据并使用Children已存在于数据库中的现有对象.

我是否误解并对MagicalRecord如何映射关系抱有错误的期望?目前我已经设置了一个带有'importChildren:`的扩展类,我可以手动处理所有查找并相应地创建/导入对象.

谢谢!

run*_*mad 11

我设法解决了这个问题.

我所做的是添加relatedByAttribute用户信息字典中的children关系和Child实体.

所以点击关系,成立relatedByAttributechildId(高于在我的例子),并单击左侧的儿童实体并为此还成立relatedByAttributechildId在用户信息字典实体本身.

这允许魔法记录使用现有对象正确映射或在需要时创建新对象 - 授予ID属性100%唯一!

在此输入图像描述