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