0

複数の開発者がプロ​​ジェクトに取り組んでいる多くのコア データ移行を行ったアプリを持っていますが、ある時点で、コア データ モデルを適切に移行できなかったようです。最終的に、特定のバージョンのアプリから現在のバージョンのアプリにアップグレードしたユーザーは、コンテキストをストアに保存できなくなります (この保存は、アプリケーションがバックグラウンドに入ったときに発生します)。

ログに記録されたエラーは次のとおりです。

This NSPersistentStoreCoordinator has no persistent stores. It cannot perform a save operation.

幸いなことに、このクラッシュとエラーはアプリの終了時に発生し、アプリはローカルで不足しているデータを Web から取得するように設計されているため、ユーザーがこのクラッシュとエラーにあまり気付かない可能性が高いため、保存の失敗はそれほど重要ではありません。ユーザーが作成したデータが失われている場合です。もちろん、アプリの終了時にストアに保存されていないデータを再ダウンロードする必要があるため、これは理想的とは言えません。

最終的に私の質問は、この問題を今後どのように修正するかということです。

私の考えは、コア データ永続モデルを完全にリセットするマイナー アップデートをリリースすることです。古いデータ ストアを一掃し、新たに開始します (データはすべてサーバーから取得されることを思い出してください)。ユーザーのデータが失われることはなく、これにより今後の問題が解決されます。より良いアイデアはありますか?

また、そのように決めた場合、これを適切に行うにはどうすればよいでしょうか。バンドルを調べて .momd ファイルを削除し、別の名前で新しいファイルを再作成しますか? それとも削除は不要で、新しい名前を付けるだけで望ましい結果が得られますか?

4

1 に答える 1

2

applicationDidFinishLaunching完全にリセットするには、 whichにチェックを追加できます。

  1. すでに移行済みであることを示すユーザー デフォルトのフラグを確認します
  2. 移行されていない場合は、現在のストア ファイルを削除します
  3. 今後再度「アップグレード」しないように、ユーザーのデフォルトでフラグを設定します
  4. それだけです、ストアを開いて必要なデータをダウンロードしてください

修正するには:

  1. 最初のバージョンから始めて、各バージョンを徐々にチェックアウトし、問題が見つかるまで実行します
  2. 問題を見つけたら、どの移行が悪いのかを突き止めます - クラッシュの原因は何ですか
  3. 移行を修正します (移行の内容に大きく依存します。新しい質問をしてください...)
于 2013-08-26T18:09:31.590 に答える