我可以序列化NSManagedObject吗?

时间:2012-02-15 16:53:37

标签: iphone objective-c ios core-data

我需要将一个对象(NSManagedObject(NSMO)子类)发送到Web服务并稍后检索它。我希望我能以某种方式序列化它,但我希望不必跳过编码箍。

我可以使用以下命令将简单的NSMO对象转换为字典: [instance dictionaryWithValuesForKeys:instance.entity.attributesByName.allKeys];

然而,我的NSMO在与其他NSMO的关系方面有很多层次。创建对象的完整序列化版本的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

如果您想以一般方式执行此操作,可以编写递归方法serializedDictionary(在NSManagedObject的子类中或在类别中):

  1. 创建一个空的NSMutableDictionary。
  2. 对于每个属性,将键和值添加到字典中。
  3. 对于每个关系,将关系名称添加为键,然后在对象上调用serializedDictionary并将其添加为值。如果它是多对多关系,则必须将这些值放在NSArray中。
  4. 请注意,如果子对象完全可以与父对象相关联(如果您有像Core Data建议的反向关系,这很可能),您需要将保存的关系列入白名单(更容易)或传递一组以跟踪哪些对象已被序列化,因此您不再对它们进行编码(更难,我不建议这样做)。