1
我发现了如下代码的经常片段,其中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
}()
我明白了。我有一个关于第3点的问题:如果你不喜欢这个解决方案,你为什么会这么建议? :)有什么更好的? (我也不喜欢它) – aneuryzm
它是一个非常简单的解决方案,其不公平的建议,因为'优雅的解决方案'只是偏好。我已经使用了CoreData模板几次,从未遇到过这种懒惰实例化的persistantContainer的问题,我建议如果它没有问题,就让它保持原样。 – Simon