私AppDelegateには、以下のすべてのおなじみのコアデータテンプレートに付属している:アプリケーションのNSPersistentContainer.loadPersistentStoresのエラーを処理する方法は?
永続コンテナ:
lazy var persistentContainer: NSPersistentContainer = { let container = NSPersistentContainer(name: "newsapp") container.loadPersistentStores(completionHandler: { (storeDescription, error) in if let error = error as NSError? { fatalError("Unresolved error \(error), \(error.userInfo)") } }) return container }()
は、それはまた次のようにコメントしていました。この実装 は、 アプリケーションのストアをロードしたコンテナを作成して返します。このプロパティは、ストアの作成に失敗する可能性がある正当な エラー条件が存在するため、オプションです。
エラーを適切に処理するために、この実装をコードに置き換えてください。
fatalError()
は、アプリケーションにクラッシュログを生成させて終了させます。この機能は出荷時のアプリケーションでは使用しないでください。開発中はこの機能が役立つかもしれません。ここでエラーのため典型的な理由は、次のとおりです。
- を親ディレクトリは、存在しません作成することができない、または書き込みを禁止します。
- デバイスがロックされているときのパーミッションまたはデータ保護のため、永続ストアにアクセスできません。
- デバイスの空き容量がありません。
- ストアを現在のモデルバージョンに移行できませんでした。
実際の問題の内容を確認するには、エラーメッセージを確認してください。
確かに、それはこの場所で終了呼び出すと、それが生産のアプリに許可されていないだけではなく、悪い考えですが、データ・ストアが何らかの理由で壊れてしまった場合ので、as I read elsewhereは、ユーザーが再インストールする必要がありますアプリはそれを知らない。この場合、ユーザーは私のアプリを削除して忘れてしまいます。
ここで、このようなエラーや他のエラーをどのように処理することになっていますか?エラー処理コードを記述しても、これらのエラーがほとんど起こらない場合、どのように正しく動作するかテストしますか?
私はすべてを見渡しましたが、例は見つかりませんでした。
私はそれに警告メッセージを作成する必要があると思います。 – Mannopson