self.managedObjectContext 和 managedObjectInstance.managedObjectContext 有啥区别?
Posted
技术标签:
【中文标题】self.managedObjectContext 和 managedObjectInstance.managedObjectContext 有啥区别?【英文标题】:What is the difference between self.managedObjectContext and managedObjectInstance.managedObjectContext?self.managedObjectContext 和 managedObjectInstance.managedObjectContext 有什么区别? 【发布时间】:2013-05-18 16:22:31 【问题描述】:所以,我有 CoreData 实体 Book
、Bookmark
、Highlight
。一本书包含有关该书的信息和Bookmarks
的NSSet
。
我想删除一本书中的书签,然后立即用我的集合重新填充它们。
这是我从另一个项目中获得的代码,我似乎无法理解他们为什么使用不同种类的deleteObject
方法。
他们会这样:
for (Bookmark *bookmark in book.bookmarks)
[bookmark.mamagedObjectContext deleteObject:bookmark];
使用self.managedObjectContext
和bookmark.managedObjectContext
有什么区别。此外,两者似乎都对内容没有任何影响,并且在尝试删除 forin
循环中的所有书签然后再次通过 forin
循环添加新集时出现错误。
如果需要更多信息,请在 cmets 中提及。
【问题讨论】:
不应使用for
循环,因为不允许forin
循环修改集合。
@sosborn 这在 CD 中完全正确,因为对象仅被标记为删除。当生命周期结束时,CD 会删除持久存储中的对象。
【参考方案1】:
managedObjectInstance.managedObjectContext
返回注册接收器的托管对象上下文。
换句话说,例如,如果您在主线程上下文(与在主线程中创建的上下文相关联)中创建了一个书签,bookmark.managedObjectContext
将指向它。
您是否使用不同的线程?不同的语境?你有什么类型的错误?分享它,为您的问题添加编辑。
【讨论】:
以上是关于self.managedObjectContext 和 managedObjectInstance.managedObjectContext 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章