我想将childContext(NSManagedObjectContext)用于详细视图,用户可以在其中编辑模型的参数。这个想法是,除非用户保存了详细视图,否则我可以简单地删除所有更改。如果他们确实保存了更改,则可以将更改传播到parentContext。
正在发生的事情是,当我使用以下代码执行生成childContext和NSManagedObject副本的代码时,正在消耗100%的CPU。
在没有childContext方法的情况下,该应用程序可以正常运行,但我还想观察childContext的更改,以使详细视图UI保持最新。因此,我需要一个childContext,而且应该可以正常工作,所以我必须缺少一些东西。
任何人都可以建议发生这种情况的原因以及如何处理吗?
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)
}
答案 0 :(得分:1)
我猜想当您尝试获取对象时,此行childContext.parent = childContext
会导致无限递归循环。
尝试使用应用的主上下文而不是子上下文本身来设置父。