3

我在 CoreData 中创建了一个实体,其中包括一个实现为 NSDictionary 的 Transformable 属性类型。NSDictionary 属性仅包含自定义类的值。自定义类的属性都是 NSString 类型。自定义类符合 NSCoding 实现:

-(void)encodeWithCoder:(NSCoder*)编码器;

-(id)initWithCoder:(NSCoder *)coder

第一次保存实体时,包括 Transformable (NSDictionary) 类型在内的所有属性都正确保存在数据库中。当从数据库中获取同一个实体并更新(包括 Transformable 属性)时,它似乎已正确更新。但是,当应用程序关闭然后重新打开时,虽然 NSDate 和 NSString 类型的其余属性是最新的,但获取实体并不会显示更新的 Transformable 属性类型。Transformable 属性是原始保存的值,而不是更新后的值。

这是 KVO 的问题,还是我在尝试将填充了自定义类的 NSDictionary 保存到 CoreData 时遗漏了其他内容?

4

2 回答 2

6

您是否将值重新设置为NSManagedObject? NSManagedObject不会观察可变形对象的变化。您需要在保存之前调用相应的设置器。

于 2010-05-10T05:14:04.903 回答
3

我遇到了同样的问题,最终切换到 NSDictionary 作为可转换属性而不是 NSMutableDictionary。只需将 NSDictionary 获取为 mutableCopy,进行处理,将最终结果放入 NSDictionary 并将其重新插入 managedObject。为我做了诀窍,我还没有找到另一个解决方案。

于 2010-09-13T22:18:08.030 回答