我有一个核心数据实体的自定义类,称为“朋友”。当我解析 XML 文件时,我需要创建临时实例来保存临时数据,此时不使用 Core Data。所以有两个选择:
A) 创建一个 NSMutableDictionary 来保存临时数据,同时从 XML 解析“对象”。
B) 解析时使用实体的类来存储临时数据。我更喜欢这样,因为它对我来说更清晰、更干燥,因为数据结构已经在那里声明了,我不必在 NSMutableDictionary 中复制该实体的整个数据模型。
但 B 有一个问题:默认情况下,所有属性都是 @dynamic,据我所知,Core Data 负责在运行时创建实现。所以我不能只使用那里的属性。因此,这就提出了一个问题:是否值得付出努力,甚至可以修改该类,使其可以在没有 Core Data 的情况下用作临时数据容器对象,即通过创建实例变量。当然,如果我必须在那里创建一个字典来保存临时数据,那根本没有意义,我会选择 A。
更新:听起来你可以使用 nil 上下文(请参阅下面 Adam 的回答)
不幸的是,实例化托管对象子类的唯一方法是将其插入上下文中。
使用可变字典(NSMutableDictionary)是最好的方法,因为您可以使用setValuesForKeysWithDictionary:
使用单个方法调用填充新的托管对象。
另一种方法是插入托管对象,然后在确定它不是新的时将其删除。如果您还没有保存,该对象甚至永远不会被写入持久存储中。
注意:这假设您在添加唯一 ID 之前确定该对象是否是新的,或者在获取唯一 ID 时排除临时对象(使用属性或使用它们的集合过滤掉),以便您仅检查先前存在的物体。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)