我想使用childContext(NSManagedObjectContext)作为一个细节视图,用户可以在其中编辑模型的参数。其思想是,除非用户保存详细视图,否则我可以简单地放弃任何更改。如果他们保存了更改,我可以将更改传播到parentContext。
发生的事情是,当我使用下面的代码执行生成子上下文和NSManagedObject副本的代码时,100%的CPU都被消耗掉了。
该应用程序在没有childContext方法的情况下运行良好,但我也希望观察childContext的更改,以保持详细视图UI是最新的。所以我需要一个孩子的背景,再加上这个应该有用,所以我一定漏掉了一些东西。
有人能告诉我为什么会发生这种事,以及该怎么办吗?
DispatchQueue.main.async {
let childContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
childContext.parent = childContext
let childEntry = childContext.object(with: foodEntry.objectID) as? FoodEntry
addFoodVC.foodEntry = childEntry
addFoodVC.context = childContext
self.navigationController?.pushViewController(addFoodVC, animated: true)
}
最佳答案
我猜这一行childContext.parent = childContext
在尝试获取对象时会导致无限递归循环。
尝试用应用程序的主上下文而不是子上下文本身设置父上下文。
关于swift - 如何防止子托管对象上下文停止应用程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51088547/