1
私はクロージャでNSPersistentContainer
が初期化され、変数に割り当てられている以下のコードのようなスニペットを見つけることがあります。クロージャ内で呼び出された補完ハンドラの問題
しかし、コードloadPersistentStores
の完了ハンドラが残りのコードと同期して実行されないため、このコードは最適ではないと思います。
これは、次のコード行でコンテナを作成した直後に利用できないことを意味します。正しい?もしそうなら、エレガントなソリューションは何でしょうか?
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