NSManagedObjectContext的propagatesDeletesAtEndOfEvent设置为false会导致保存

时间:2017-03-08 15:53:38

标签: swift macos cocoa core-data nsmanagedobjectcontext

我有一对One-to-Many关系的核心数据实体。

Department <-(optional) (delete rule: Cascade) (optional)->> Item

Item <-(optional) (delete rule: Nullify) (optional)->> Department

Item是一个类似树节点的实体,它也与自身有关系。树可以变得非常大(根分支中超过10,000个节点)。

有一个父背景NSManagedObjectContext和一个主要队列作为孩子。

为了让删除Items感觉更快,我将主要队列MOC的propagatesDeletesAtEndOfEvent设置为false。 (当应用程序Resigned Active时,将保存更改。)不幸的是,当保存主队列MOC时会出现错误消息:

  

验证恢复尝试FAILED with Error Domain = NSCocoaErrorDomain Code = 1600 ...

如果propagatesDeletesAtEndOfEvent是默认true,则没有错误。

我的删除代码看起来像这样,没什么特别的:

department.removeFromItems(items as NSSet) // Optional. Also tried without this line.
for i in items {
    self.managedObjectContext!.delete(i)
}

我很少谈到propagatesDeletesAtEndOfEvent的用法。任何错误的例子或解释都将不胜感激。

这是a related question。但它与propagatesDeletesAtEndOfEvent属性无关。

关于删除大量对象的

Another question

0 个答案:

没有答案