1

コア データ モデルに多くの変更を加えました。以前は、単純な自動移行を使用していました。ただし、これは今回は失敗します。移行中のデータは気にしないので、自動移行が失敗した場合は永続ストアを削除して、再度設定したいだけです。これは有効な方法ですか?注意しなければならないことはありますか?これにより、アプリが拒否される可能性はありますか?

4

1 に答える 1

1

それを行うにはいくつかの明確な問題があり、注意する必要があります。 この回答には、NSManagedObjectContextのドキュメントからの良いアドバイスがありました

コンテキストには常に、モデルを提供し、データを含むさまざまな永続ストアにリクエストをディスパッチする「親」の永続ストア コーディネーターがあります。コーディネーターがなければ、コンテキストは完全には機能しません。コンテキストのコーディネーターは、管理オブジェクト モデルを提供し、永続性を処理します。外部ストアからフェッチされたすべてのオブジェクトは、外部ストアに対して各オブジェクトを一意に識別するために使用されるグローバル識別子 (NSManagedObjectID のインスタンス) と共にコンテキストに登録されます。

私たちのアプリの 1 つで同様の状況に直面したとき、以前の不適切な移行によって多くのデバイスで古いストアが台無しになっていたため、新しい永続ストアを作成し、古いストアを非推奨にすることにしました。思ったより面倒な移行になってしまいましたが、うまくいきました。

あなたの計画の問題は克服できないわけではありません。注意することをお勧めします。NSManagedObjectContext のリセットを使用するという Giao のアドバイスが気に入りました。削除して再構築する場合、永続ストア コーディネーターが混乱する可能性があります。Apple は舞台裏で非常に多くのことを行っているように見えるので心配です。また、特にアップグレード プロセスにおいて、リリースされたアプリとデバッグ バージョンのコア データの動作が異なるように見えるため、心配しています。

自動移行に問題が発生することを認識し、別の道を探していることは賢明だと思います。最近、アプリでのデータ移行の失敗に対処するために 1 か月間大急ぎで対処しなければならなかったグループを見てきました。

于 2013-05-02T05:40:28.310 に答える