我在iOS 7应用程序中使用Core Data来处理实体的编辑和创建。实体之间存在关系,这些实体都有逆向关系(正如Apple建议的那样)。
为了这个问题,让我们选择这些相互关联的实体中的任何一个,并称之为Root
实体:我要编码的东西;逻辑上存在于层次结构“顶部”的东西。我将其称为“对象图”。
问题是:
对NSData进行编码和解码此类对象图的最简单方法是什么?
我想这样做的原因是我希望将我的Core Data对象图持久化到云服务上,而不需要编写我自己的NSIncrementalStore
子类(它有点涉及...... !)。
AutoCoding和HRCoder 几乎似乎可以完成这项工作,但我已尝试过这种组合,但它与{{1在撰写本文时。
不过,我正在寻找其他选择。当然,不仅有一种方法可以做到这一点。
它不一定是JSON,但它会很好。二进制会很好。
答案 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个属性名称。