TL; DRバージョン:-[NSManagedObjectContext save:]
が失敗する可能性のある理由のリストがありますか?私はCoreDataErrors.h
を探していますが、どのキーがNSDetailedErrorsKey
に関連しているかはわかりません。NSManagedObjectContextの保存に失敗する可能性のある理由の一覧
背景:私は、SwiftとObjective-Cの組み合わせで書かれた配送アプリを維持しています。それはJSQCoreDataKit
を使用します。他の誰かがコードを元々書きました。
再現できなかった制作クラッシュがあります。スタックトレースから、NSManagedObjectContext
セーブに失敗した後にエラーハンドラでクラッシュしていることをEXC_BAD_ACCESS
NSError
をコンソールに記録しようとしていることがわかります。保存の失敗は子のコンテキスト上にあり、当時変更されていたモデルクラスを知っています。
そこで私たちは、保存が失敗していることを伝えることができ、私たちはセーブ失敗の理由についての詳細な情報を持っていません。
潜在的な修正をテストするために、クラッシュの再現を試みるために、保存の失敗の理由から逆に作業したいと考えています。
実際には、クラッシュは保存エラーの副作用です。だから、クラッシュを修正したいが、セーブ失敗の理由も解決する必要がある。
ユーザーの95%で、問題なく保存されます。
モデルには非オプションフィールドがいくつかあり、データはサーバー応答から解析されたJSONから取得されます。この段階では、サーバーが私たちに悪いデータを送信している疑いがありません。
オプションを削除しても、保存できなかった可能性のある理由のリストを知っている人はいますか?例えば
- 検証エラー:
はこれまでのところ、私は承知しています必要な値が欠落しているか、またはモデルの指定された最大値/最小値外の値。
- 保存競合が発生する可能性があります(
NSPersistentStoreSaveConflictsErrorKey
参照)。しかし、子コンテキストから親コンテキストに保存するときにこれを行うことが可能かどうかは不明です。
[Core Data Constants](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/CoreDataFramework/Miscellaneous/CoreData_Constants/)参照はありますか? .hファイル以上のものを追加するかどうかはわかりません。 – pbasdf
保存に失敗したことはクラッシュと同じではありません。たとえば、検証の失敗は本質的にクラッシュではありませんが、コードへの応答は可能です。また、コアデータに直接関係しない理由で、クラッシュが発生する可能性があります。たとえば、保存に失敗した後に発生するメモリ管理エラーです。 –
ありがとうございますが、私はそれらが2つの別個のものであることを認識しています - 私の投稿が十分にはっきりしない場合には謝罪します。 –