什么是编码所选根'的最简单方法?核心数据实体及其所有关系?

时间:2014-03-30 12:05:10

标签: ios core-data decode encode

我在iOS 7应用程序中使用Core Data来处理实体的编辑和创建。实体之间存在关系,这些实体都有逆向关系(正如Apple建议的那样)。

为了这个问题,让我们选择这些相互关联的实体中的任何一个,并称之为Root实体:我要编码的东西;逻辑上存在于层次结构“顶部”的东西。我将其称为“对象图”。

问题是:

对NSData进行编码和解码此类对象图的最简单方法是什么?

我想这样做的原因是我希望将我的Core Data对象图持久化到云服务上,而不需要编写我自己的NSIncrementalStore子类(它有点涉及...... !)。

AutoCodingHRCoder 几乎似乎可以完成这项工作,但我已尝试过这种组合,但它与{{1在撰写本文时。

不过,我正在寻找其他选择。当然,不仅有一种方法可以做到这一点。

它不一定是JSON,但它会很好。二进制会很好。

1 个答案:

答案 0 :(得分:0)

在我看来,你不需要继承NSIncrementalStore。您可以创建记录并将其保存到商店,并使用addPersistentStoreWithType:...创建的NSPersistentStoreCoordinator普通香草商店。

直接的方法是通过简单地获取数据并将其复制到NSManagedObject子类的属性来处理传入的JSON,如下所示:

object.title = jsonDictionary[@"title"];
object.numericAttribute = [jsonDictionary[@"numericAttribute] integerValue];

如果您注意命名属性和实体名称完全相同,您可以使用KVC使用一些快捷方式,例如

[object setValue:jsonDictionary[key] forKey:key];

我曾经为一个大型遗留项目做了以上操作,其中重复旧属性名称是不可行的,因此我使用自定义属性列表(plist)来匹配大约800个属性名称。