【发布时间】: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 会删除持久存储中的对象。
标签: iphone ios cocoa-touch cocoa core-data