Core data CoreData中NSDictionary属性的更新未保存

Core data CoreData中NSDictionary属性的更新未保存,core-data,nsdictionary,key-value-observing,Core Data,Nsdictionary,Key Value Observing,我在CoreData中创建了一个实体,其中包括一个作为NSDictionary实现的可转换属性类型。NSDictionary属性仅包含自定义类的值。自定义类的属性都是NSString类型。自定义类符合NSCoding实现: -(void)编码器与编码器:(NSCoder*)编码器 -(id)initWithCoder:(NSCoder*)编码器 首次保存实体时,所有属性(包括可转换(NSDictionary)类型)都正确保存在数据库中。当从数据库中提取并更新同一实体(包括可转换属性)时,该实体似

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

-(void)编码器与编码器:(NSCoder*)编码器

-(id)initWithCoder:(NSCoder*)编码器

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


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

是否将该值设置回
NSManagedObject
NSManagedObject
不会监视可转换对象的更改。在保存之前,您需要调用相应的setter。

我遇到了同样的问题,并最终切换到NSDictionary作为可转换属性,而不是NSMutableDictionary。只需将NSDictionary作为mutableCopy获取,处理它,将最终结果放入NSDictionary,然后将其重新插入managedObject。 我做了这个把戏,但我还没有找到另一个解决办法