NSManagedObjectContext 的 spreadsDeletesAtEndOfEvent 设置为 false 会导致保存时出错

2024-01-11

我有一对一对多关系的核心数据实体。

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关于删除大量对象。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSManagedObjectContext 的 spreadsDeletesAtEndOfEvent 设置为 false 会导致保存时出错 的相关文章

随机推荐