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

时间:2017-05-30 17:11:18

标签: swift closures

我经常找到与下面代码类似的代码段,其中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 个答案:

答案 0 :(得分:0)

  1. 不要懒惰地实例化persistentContainer但只是提前做。
  2. 也在完成处理程序中包含依赖的代码行。
  3. 有一个商店准备好的东西,我个人不喜欢。
  4. 保持原样,如果它没有产生问题。
相关问题