問題:互換性のないCoreDataストアは常にクラッシュを引き起こしますか?
我々は最近、我々のアプリにCoreDataを導入し、以前に不完全CoreDataのモデルとバージョンをリリースしました。その出荷されたバージョンでは、データをsqliteデータベースに書き込むコードを実装したことはなく、モデルのみが実装されました。
私たちの内部テストでは、デバイスを出荷済みの不完全モデルに戻し、新しいモデルに更新し、移行を実行する必要はなく、互換性のないストア例外も発生しませんでした。
しかし、私たちのベータテストでは、互換性のないストアが原因でクラッシュしている既存のユーザーを特定しましたが、一部の既存ユーザーはそうではありませんでした。
質問:
互換性のない店舗が常にクラッシュを引き起こすんし、そうであれば、旧バージョンから別のCoreDataモデルに更新する際に、なぜ我々はクラッシュを体験しませんか?
最新のCoreDataモデルに変更を加えると、互換性のないストアエラーが発生することに言及する必要がありますが、コアデータモデルの非常に基本的なバージョンに戻すと、この例外はスローされません。
あなたがcoredataを変更したとき、古いビルドを削除して、古いビルドを使用すると新しいビルドを使用しなければならないので、クラッシュする可能性があります。 –
を見てください:https://www.raywenderlich.com/27657/how-to-perform-a-lightweight-core-data-migration – raki
インストールする前にデバイスのアプリを削除すると、それはないCoreDataスキーマが競合するため、クラッシュは発生しません。テストユーザーが別のCoreDataスキーマを持つ新しいバージョンのアプリを使用する前にデバイスからアプリを削除しなかった場合、スキーマの競合によってクラッシュが発生します。 – Zhang