gpt4 book ai didi

swift - 如何防止子托管对象上下文停止应用程序?

转载 作者:行者123 更新时间:2023-11-28 05:57:19 25 4
gpt4 key购买 nike

我想将 childContext (NSManagedObjectContext) 用于详细 View ,用户可以在其中编辑模型的参数。这个想法是,除非用户保存详细 View ,否则我可以简单地放弃任何更改。如果他们确实保存了更改,我可以将更改传播到 parentContext。

发生的事情是,当我使用以下代码执行创建 childContext 和 NSManagedObject 副本的代码时,100% 的 CPU 被消耗。

应用程序在没有 childContext 方法的情况下工作正常,但我还想观察 childContext 的变化,以使详细 View 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)
}

最佳答案

我猜这行 childContext.parent = childContext 在您尝试获取对象时会导致无限递归循环。

尝试使用应用的主上下文而不是子上下文本身来设置父级。

关于swift - 如何防止子托管对象上下文停止应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51088547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com