NSManagedObject changedValues 不正确
NSManagedObject changedValues incorrect
我有一个 NSManagedObject 子类无法正确更新它的 属性。
SCItem.h(相关部分)
SCItem : NSManagedObject
@property (nonatomic, retain) NSString *name;
SCItem.m(相关部分)
@dynamic name;
- 我用 initWithEntity:insertIntoManagedObjectContext
创建了一个新项目
- 然后我设置名字:@"name1"
- item.isUpdated 是
- item.isInserted 是
- [item changedValues] 显示名称已更改
- 然后我保存上下文
- 项目已正确保存
- 我重新设置名字:@"name2"
- item.isUpdated 是
- item.isInserted 不是
- [item changedValues] 为空
- 记录的 item.name 是正确的 ("name2")
- 保存上下文不会保留名称(这是预期的,因为 MOC 显然不知道该值确实发生了变化)
我已经检查过该项目没有被重新初始化(内存中的相同位置)。我还确认 managedobjectcontext 保持不变。
我是 CoreData 的新手。我错过了什么吗?我从搜索中得到的唯一想法是确认子类仍然具有动态的 属性,并且确实如此。
答案:我是根据 NSTextView 的字符串值设置字符串的。一旦我将它设置为该值的副本,它就可以正常工作。 NSManagedObject 一定认为它被设置为旧值,因为字符串的内存地址是相同的(我认为)。
我有一个 NSManagedObject 子类无法正确更新它的 属性。
SCItem.h(相关部分)
SCItem : NSManagedObject
@property (nonatomic, retain) NSString *name;
SCItem.m(相关部分)
@dynamic name;
- 我用 initWithEntity:insertIntoManagedObjectContext 创建了一个新项目
- 然后我设置名字:@"name1"
- item.isUpdated 是
- item.isInserted 是
- [item changedValues] 显示名称已更改
- 然后我保存上下文
- 项目已正确保存
- 我重新设置名字:@"name2"
- item.isUpdated 是
- item.isInserted 不是
- [item changedValues] 为空
- 记录的 item.name 是正确的 ("name2")
- 保存上下文不会保留名称(这是预期的,因为 MOC 显然不知道该值确实发生了变化)
我已经检查过该项目没有被重新初始化(内存中的相同位置)。我还确认 managedobjectcontext 保持不变。
我是 CoreData 的新手。我错过了什么吗?我从搜索中得到的唯一想法是确认子类仍然具有动态的 属性,并且确实如此。
答案:我是根据 NSTextView 的字符串值设置字符串的。一旦我将它设置为该值的副本,它就可以正常工作。 NSManagedObject 一定认为它被设置为旧值,因为字符串的内存地址是相同的(我认为)。