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 - NSSet 被删除?

如何根据现有的 NSManagedObject 值在 NSManagedObject 派生类中设置默认值?

属性作为“当前 NSManagedObject”的视图控制器中的 NSManagedObject

创建新的 NSManagedObject 并将其分配给新的 NSManagedObject *有时*会失败

将 NSManagedObject 与另一个 NSManagedContext(多线程)中的“相同”NSManagedObject 合并