NSManagedObject changedValues 不正确
Posted
技术标签:
【中文标题】NSManagedObject changedValues 不正确【英文标题】:NSManagedObject changedValues incorrect 【发布时间】:2015-01-28 19:21:11 【问题描述】:我有一个不能正确更新其属性的 NSManagedObject 子类。
SCItem.h(相关部分)
SCItem : NSManagedObject
@property (nonatomic, retain) NSString *name;
SCItem.m(相关部分)
@dynamic name;
我使用 initWithEntity:insertIntoManagedObjectContext 创建了一个新项目
然后我设置名称:@"name1"
item.isUpdated 是 YES
item.isInserted 是 YES
[item changedValues] 显示名称已更改
然后我保存上下文
项目已正确持久化
我重新设置了名称:@"name2"
item.isUpdated 是 YES
item.isInserted 是 NO
[item changedValues] 为空
记录的 item.name 是正确的(“name2”)
保存上下文不会保留名称(这是意料之中的,因为 MOC 显然不知道该值确实发生了变化)
我已检查该项目没有被重新初始化(内存中的相同位置)。我还确认 managedobjectcontext 保持不变。
我是 CoreData 的新手。我错过了什么吗?我从搜索中得到的唯一想法是确认子类仍然具有动态属性,并且确实如此。
【问题讨论】:
【参考方案1】:答案:我根据 NSTextView 的字符串值设置字符串。一旦我将它设置为该值的副本,它就可以正常工作。 NSManagedObject 一定认为它被设置为旧值,因为字符串的内存地址是相同的(我认为)。
【讨论】:
以上是关于NSManagedObject changedValues 不正确的主要内容,如果未能解决你的问题,请参考以下文章
NSManagedObject 故障/无法获得由 NSManagedObject 处理的“原始”对象
如何根据现有的 NSManagedObject 值在 NSManagedObject 派生类中设置默认值?
属性作为“当前 NSManagedObject”的视图控制器中的 NSManagedObject
创建新的 NSManagedObject 并将其分配给新的 NSManagedObject *有时*会失败
将 NSManagedObject 与另一个 NSManagedContext(多线程)中的“相同”NSManagedObject 合并