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