NSManagedObject changedValues不正确

时间:2015-01-28 19:21:11

标签: macos cocoa core-data nsmanagedobject

我有一个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]为EMPTY
  • 记录的item.name是正确的(" name2")
  • 保存上下文并不会保留名称(这是预期的,因为MOC显然不知道该值确实发生了变化)

我检查过该项目未重新初始化(内存中的位置相同)。我还确认了managedobjectcontext保持不变。

我是CoreData的新手。我错过了什么吗?我从搜索中获得的唯一想法是确认子类仍然具有动态属性,并且确实如此。

1 个答案:

答案 0 :(得分:1)

答案:我是根据NSTextView的字符串值设置字符串。一旦我将其设置为该值的副本,它就能正常工作。 NSManagedObject必须认为它被设置为旧值,因为字符串的内存地址是相同的(我认为)。