最初に、これはデータ移行に関する重要な質問ではないことを述べさせてください。Core Data モデルの変更は実際には検討していませんが、アプリの更新中に項目を追加します。
プロセスは次のとおりです。
1) アプリケーションは、プリロードされたコア データで作成されます。具体的には、チェックリストです。2) ユーザーは特定の値 (所有、指名手配など) を変更してこのチェックリストを編集できますが、アイテムを削除することはできません 3) 新しいアイテムが追加されたアップデートをリリースします。ユーザーの既存のデータは変更されません (エラータ目的で変更する必要がない限り)。
私は現在、NSUserDefaults を作成して、ユーザーが更新を受信したかどうかを確認し、受信していない場合は新しい項目を追加することでこれを管理しています。たとえば、ユーザーがバージョン 1.4.3 から 1.4.4 に移行する場合、アプリは 1.4.4 で追加されたアイテムを確認して追加します。ただし、アプリが 1.4.0 から 1.4.4 に移行する場合、1.4.1、1.4.2、1.4.3、および 1.4.4 で追加された項目を確認して追加します。さらに、ユーザーがバージョン 1.4.4 で新しいアプリをインストールしている場合、新しいアイテムは既にプリロードの一部であり、以前の更新を適用しないことを認識しています。更新は .plist/xml ファイルとして適用されます
システムは現在正常に動作していますが、アプリケーションに 38 個の plist ファイルがあり、更新が適用されているかどうかを確認する 37 個の if/else ステートメントがあるため、煩雑になりつつあります。
もっと良い方法があるはずです。私の最初の考えは、アプリに 2 つのデータベースを用意することです... 1 つはアプリの更新で更新し、もう 1 つはユーザーが編集できます。次に、アプリが更新されるたびにデータベースが比較され、データベース内の新しいアイテムが編集可能なストアにコピーされます。ただし、これは長いプロセスになるのではないかと心配しています (現在 37,000 を超えるアイテムがあり、更新で 400 ~ 500 を追加する場合は問題ありませんが、37,000 のアイテムをトラバースして新しいアイテムをコピーするには長い時間がかかりますか? ?)
この質問はこのサイトにとって主観的すぎるかもしれません。そうであれば申し訳ありませんが、提案をいただければ幸いです。
ザック