gpt4 book ai didi

swift - 在闭包内调用的完成处理程序的问题

转载 作者:行者123 更新时间:2023-11-28 08:09:00 25 4
gpt4 key购买 nike

我经常发现如下代码片段,其中 NSPersistentContainer 在闭包中初始化并分配给变量。

但是我认为这段代码不是最优的,因为 loadPersistentStores 函数的完成处理程序没有与其余代码同步执行。

这意味着 storeDescription 在下一行代码中创建容器后无法立即使用。正确的?如果是这样,什么是优雅的解决方案?

lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "Test")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()

最佳答案

  1. 不要懒惰地实例化 persistentContainer,而是尽早进行。
  2. 在完成处理程序中也包括依赖代码行。
  3. 我个人不喜欢带有 store-is-ready-bool 的东西。
  4. 如果它不会产生问题,请保持原样。

关于swift - 在闭包内调用的完成处理程序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44268147/

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