【问题标题】:NSManagedObject changedValues incorrectNSManagedObject changedValues 不正确
【发布时间】: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 的新手。我错过了什么吗?我从搜索中得到的唯一想法是确认子类仍然具有动态属性,并且确实如此。

【问题讨论】:

    标签: macos cocoa core-data nsmanagedobject


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-05
      • 2013-12-20
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2021-09-29
      相关资源
      最近更新 更多