MagicalRecord:修改相关对象的属性

Posted

技术标签:

【中文标题】MagicalRecord:修改相关对象的属性【英文标题】:MagicalRecord: modify attribute of related object 【发布时间】:2013-10-03 12:28:03 【问题描述】:

我正在从我无法控制的 Web 服务导入 JSON 响应。此响应包含我映射到 Show 实体的元素,该实体在同一 JSON 中具有多个相关的 Artwork 对象。

我通过 userinfo 键设置了关系,并且运行良好。我的问题是 JSON 中的艺术品元素不包含唯一 ID:

    
        Filetype = jpg;
        Id = "-1036406380";
        Offset = 2;
        Rating = 1;
        Type = 3;
    

可能有多个元素具有相同的Id。如果这些元素已经存储在 CoreData 中,这将导致 MagicalRecord 无法识别这些元素。

我的解决方案是在实体上引入一个名为 uniqueArtworkID 的新字段。该字段将是一个由 ID、Offset 和 Type 连接的字符串。

最后一个问题: 我可以如何或在代码中的什么位置创建 uniqueArtworkID,以便 MagicalRecord 能够将其作为 Artwork 实体的“主”键?

编辑: 我发现我可以在我的 NSManagedObject 子类中覆盖 - (BOOL) MR_importValuesForKeysWithObject:(id)objectData 来生成和设置唯一 ID。更近了一步,但这并不能解决原始 JSON 数据不包含该唯一键并且检查现有对象失败,从而导致重复条目的问题。

【问题讨论】:

【参考方案1】:

通过删除 MagicalRecord 并直接使用 Core Data API 解决。

【讨论】:

以上是关于MagicalRecord:修改相关对象的属性的主要内容,如果未能解决你的问题,请参考以下文章

MagicalRecord - 获取按月/年分组的对象

KVC使用MagicalRecord排序

MagicalRecord 没有使用我的模型

MagicalRecord:如何将值导入相关实体

MagicalRecord 不应该自动迁移新属性吗?

自定义 NSFetchreqeust - 按子 NSSet 属性排序父实体 [MagicalRecord+Coredata]