我需要将一个对象(NSManagedObject(NSMO)子类)发送到Web服务并稍后检索它。我希望我能以某种方式序列化它,但我希望不必跳过编码箍。
我可以使用以下命令将简单的NSMO对象转换为字典:
[instance dictionaryWithValuesForKeys:instance.entity.attributesByName.allKeys];
然而,我的NSMO在与其他NSMO的关系方面有很多层次。创建对象的完整序列化版本的最佳方法是什么?
答案 0 :(得分:4)
如果您想以一般方式执行此操作,可以编写递归方法serializedDictionary
(在NSManagedObject的子类中或在类别中):
serializedDictionary
并将其添加为值。如果它是多对多关系,则必须将这些值放在NSArray中。请注意,如果子对象完全可以与父对象相关联(如果您有像Core Data建议的反向关系,这很可能),您需要将保存的关系列入白名单(更容易)或传递一组以跟踪哪些对象已被序列化,因此您不再对它们进行编码(更难,我不建议这样做)。