【问题标题】:What is the difference between self.managedObjectContext and managedObjectInstance.managedObjectContext?self.managedObjectContext 和 managedObjectInstance.managedObjectContext 有什么区别?
【发布时间】:2013-05-18 16:22:31
【问题描述】:

所以,我有 CoreData 实体 BookBookmarkHighlight。一本书包含有关该书的信息和BookmarksNSSet

我想删除一本书中的书签,然后立即用我的集合重新填充它们。

这是我从另一个项目中获得的代码,我似乎无法理解他们为什么使用不同种类的deleteObject 方法。

他们会这样:

for (Bookmark *bookmark in book.bookmarks) {
    [bookmark.mamagedObjectContext deleteObject:bookmark];
}

使用self.managedObjectContextbookmark.managedObjectContext 有什么区别。此外,两者似乎都对内容没有任何影响,并且在尝试删除 forin 循环中的所有书签然后再次通过 forin 循环添加新集时出现错误。

如果需要更多信息,请在 cmets 中提及。

【问题讨论】:

  • 不应使用for 循环,因为不允许forin 循环修改集合。
  • @sosborn 这在 CD 中完全正确,因为对象仅被标记为删除。当生命周期结束时,CD 会删除持久存储中的对象。

标签: iphone ios cocoa-touch cocoa core-data


【解决方案1】:

managedObjectInstance.managedObjectContext 返回注册接收器的托管对象上下文。

换句话说,例如,如果您在主线程上下文(与在主线程中创建的上下文相关联)中创建了一个书签,bookmark.managedObjectContext 将指向它。

您是否使用不同的线程?不同的语境?你有什么类型的错误?分享它,为您的问题添加编辑。

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    • 2015-03-26
    • 2013-08-19
    相关资源
    最近更新 更多