2016-05-20 13 views
3

TL; DRバージョン-[NSManagedObjectContext save:]が失敗する可能性のある理由のリストがありますか?私はCoreDataErrors.hを探していますが、どのキーがNSDetailedErrorsKeyに関連しているかはわかりません。NSManagedObjectContextの保存に失敗する可能性のある理由の一覧

背景:私は、SwiftとObjective-Cの組み合わせで書かれた配送アプリを維持しています。それはJSQCoreDataKitを使用します。他の誰かがコードを元々書きました。

再現できなかった制作クラッシュがあります。スタックトレースから、NSManagedObjectContextセーブに失敗した後にエラーハンドラでクラッシュしていることをEXC_BAD_ACCESSNSErrorをコンソールに記録しようとしていることがわかります。保存の失敗は子のコンテキスト上にあり、当時変更されていたモデルクラスを知っています。

そこで私たちは、保存が失敗していることを伝えることができ、私たちはセーブ失敗の理由についての詳細な情報を持っていません。

潜在的な修正をテストするために、クラッシュの再現を試みるために、保存の失敗の理由から逆に作業したいと考えています。

実際には、クラッシュは保存エラーの副作用です。だから、クラッシュを修正したいが、セーブ失敗の理由も解決する必要がある。

ユーザーの95%で、問題なく保存されます。

モデルには非オプションフィールドがいくつかあり、データはサーバー応答から解析されたJSONから取得されます。この段階では、サーバーが私たちに悪いデータを送信している疑いがありません。

オプションを削除しても、保存できなかった可能性のある理由のリストを知っている人はいますか?例えば

  • 検証エラー:

    はこれまでのところ、私は承知しています必要な値が欠落しているか、またはモデルの指定された最大値/最小値外の値。

  • 保存競合が発生する可能性があります(NSPersistentStoreSaveConflictsErrorKey参照)。しかし、子コンテキストから親コンテキストに保存するときにこれを行うことが可能かどうかは不明です。
+1

[Core Data Constants](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/CoreDataFramework/Miscellaneous/CoreData_Constants/)参照はありますか? .hファイル以上のものを追加するかどうかはわかりません。 – pbasdf

+0

保存に失敗したことはクラッシュと同じではありません。たとえば、検証の失敗は本質的にクラッシュではありませんが、コードへの応答は可能です。また、コアデータに直接関係しない理由で、クラッシュが発生する可能性があります。たとえば、保存に失敗した後に発生するメモリ管理エラーです。 –

+0

ありがとうございますが、私はそれらが2つの別個のものであることを認識しています - 私の投稿が十分にはっきりしない場合には謝罪します。 –

答えて

1

はありませんはエラーなしエラー-save:です。私がその状況を見るたびに、私のコードのどこかに私のせいであった。

エラー箇所の周囲にコードを表示して質問を更新できますか?保存の

可能障害がある:

  • は、障害(最も一般的)
  • 検証の失敗(あまり一般的ではない)
  • NSPersistentStore
  • nilNSManagedObjectContext(この中で定義されていませんストアをマージ

すべての最後のものを除いてoseは、質問するエラーオブジェクトを生成します。