5

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

这是一个简单的 JSON:

[
  { 
    parentId: "<unique id>",
    parentName : "<name>",
    children : [
                  {
                     childId: "<unique id>",
                     childName: "<name>"
                  },
                  {
                     childId: "<unique id>",
                     childName: "<name>"
                  }
               ]
  },
  { <another parent with children> }
]

我有一个与 NSManagedObjectParent有一对多关系的ChildNSManagedObject。关系名称是children,我已经分别设置relatedByAttributeChildParentchildIdparentId

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

我对 MagicalRecord 如何映射关系有误解和错误的期望吗?目前,我已经使用“importChildren:”设置了一个扩展类,我可以在其中手动处理所有查找并相应地创建/导入对象。

谢谢!

4

1 回答 1

11

我设法解决了这个问题。

我所做的是在关系和实体relatedByAttribute的用户信息字典中添加。childrenChild

因此,单击关系并设置relatedByAttributechildId(在我上面的示例中)并单击左侧的子实体,为此也在实体本身的用户信息字典中设置relatedByAttributechildId

这允许 Magical Record 使用现有对象正确映射或在需要时创建新对象 - 假设 ID 属性是 100% 唯一的!

在此处输入图像描述

于 2013-03-26T13:02:55.247 回答