0

アプリの最近の更新で、多くのクラッシュ ログが表示され、コア データが障害を解決できなかったというエラーが表示されます。しかし、アプリのどこ (起動時、または他の場所) にも、障害を解決できないオブジェクトを削除したり、カスケード削除したりすることはありませんでした。このエラーは他にどのように発生する可能性がありますか? そして、それをキャッチしてライブアプリ内で修正する方法はありますか?

オブジェクトを追加したが、まだ適切に保存していない場合もあるでしょうか?

4

1 に答える 1

5

「適切に」保存されなかったオブジェクトがこの動作を引き起こす可能性があります。

それを行う1つの方法は次のとおりです。

  • 子コンテキストにオブジェクトを挿入する
  • そのオブジェクトの永久 ID を取得する
  • 親コンテキストに保存
  • 親コンテキストでオブジェクトを取得する
  • 親コンテキストでオブジェクトを更新します
  • 親コンテキストのオブジェクトにアクセスします (そのオブジェクトの障害を満たします)

編集:

シングル コンテキスト アーキテクチャでこの状態に到達する別の方法は次のとおりです。

  • オブジェクトを挿入する
  • オブジェクトの永久 ID を取得する
  • オブジェクトをリフレッシュする
  • オブジェクトへのアクセスを試行します (オブジェクトで障害をトリガーします)

更新は、フェッチされた結果コントローラーがデータをページングした結果である可能性があり、必ずしもアプリケーションで「目に見える」ものであるとは限りません。

さらに、親子コンテキスト アーキテクチャで常にこの例外をキャッチできるとは限らない CoreData の「バグ」がありますが、試すことはできます ...

ただし、これが遭遇したシナリオである場合、これはアプリケーションにとって望ましい動作ではありません。ストアに追加された新しいデータが失われます。

于 2013-11-15T07:13:28.837 に答える