我有一对一对多关系的核心数据实体。
Department <-(optional) (delete rule: Cascade) (optional)->> Item
Item <-(optional) (delete rule: Nullify) (optional)->> Department
Item
是一个类似树节点的实体,它本身也有关系。该树可以长得很大(根分支中超过 10,000 个节点)。
有家长背景NSManagedObjectContext
和一个主队列作为孩子。
希望能够删除Items
感觉更快,我设置了主队列 MOCpropagatesDeletesAtEndOfEvent https://developer.apple.com/reference/coredata/nsmanagedobjectcontext/1506228-propagatesdeletesatendofevent to false
。 (当应用程序退出活动时,更改将被保存。)不幸的是,保存主队列 MOC 时会出现错误消息:
验证恢复尝试失败,错误域 = NSCocoaErrorDomain 代码 = 1600 ...
If propagatesDeletesAtEndOfEvent
是默认值true
,没有错误。
我的删除代码如下所示,没什么特别的:
department.removeFromItems(items as NSSet) // Optional. Also tried without this line.
for i in items {
self.managedObjectContext!.delete(i)
}
我很少看到关于使用的讨论propagatesDeletesAtEndOfEvent
。错误的任何示例或解释将不胜感激。
Here is 一个相关的问题 https://stackoverflow.com/questions/27172491/how-to-correctly-propagate-delete-from-main-threads-nsmanagedobjectcontext-to-c。但这与propagatesDeletesAtEndOfEvent
财产。
另一个问题 https://stackoverflow.com/questions/10581569/what-is-the-most-efficient-way-to-delete-a-large-number-10-000-objects-in-cor关于删除大量对象。