为什么awakeFromInsert被调用两次?

jrt*_*ton 3 cocoa cocoa-touch core-data objective-c

我已经实现awakeFromInsert了在我的核心数据对象中设置一些默认值和关系.但是,该方法被调用两次,这意味着我添加的to-many值被多次添加.

我正在使用父和子托管对象上下文.

是什么赋予了?

jrt*_*ton 10

awakeFromInsert将对象插入其初始上下文时将调用.保存此上下文并将更改推送到父上下文时,将再次调用它.

您可以查询self.managedObjectContext属性以确定要为其调用方法的情况.根据您的特定用例,您可能需要检查是否存在parentContext并采取相应措施.

  • 只有我认为这是一个错误吗?不确定它是在您还是 Apples 方面,但是 [`awakeFromInsert` 的文档](https://developer.apple.com/library/mac/documentation/cocoa/reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject. html#//apple_ref/occ/instm/NSManagedObject/awakeFromInsert) 明确表示此方法在对象生命周期中仅调用一次。 (3认同)
  • 您不是唯一的一个 - 有关更多讨论,请参阅 http://lists.apple.com/archives/cocoa-dev/2011/Nov/msg00734.html。我把这个问题放在这里是为了可见,因为那个线程已经很老了。文档是“正确的”,因为`self` 在每个上下文中都是不同的对象。 (2认同)