そのため、アプリの新しいバージョンのリリース時に、コア データを利用したアプリで SQL データを更新するというかなり一般的な問題があります。
アプリの仕組みの概要
アプリと同じ xcdatamodeld ファイルを使用するコンソール アプリがあり、SQL データベース (sqlite ファイル) を事前に入力します。次に、事前に入力されたデータのために、アプリでこのファイルを使用します。
問題は、このような更新 (通常は毎月) を実行するたびに、ドキュメント フォルダーが保持され、アプリが新しいデータを無視し、新しいデータがあるはずの場所に空白のページが表示されることです。これは明らかに、アプリを削除して再インストールすることで解決されますが、毎月新しいコンテンツが必要なユーザーにとっては面倒です。
これまでに試したこと
- コア データ移行ドキュメントに目を通し、「データ モデルのバージョン管理」を利用するようにアドバイスされました。私の問題はモデルではなく実際のデータにあるため、これはうまくいきませんでした。モデルは同じままです。変更されるのは、それがフィードするデータだけです。
- アプリ自体を更新する必要がないように、毎日 Web サービスから JSON ファイルを読み込んでみましたが、クライアントから、ユーザーが求めている主な機能の 1 つがオフライン アクセスであるという苦情を受けました。特に、モバイル インターネット アクセスがかなり高価で信頼性が低い国に住む人にとっては.
-上記の理由により、stackmob などの他のソリューションは除外されました。
読んでよく考えた結果、これでうまくいくかもしれないと感じました。
アプリの起動時に既存のデータベースをチェックするコードを記述します。既存の DB が新しいものと異なる場合 (バージョン番号 1 < 新しいバージョンの場合など、何らかの数値依存条件を使用する予定です)、既存の DB を削除し、更新から新しい DB を使用します。アップデートがリリースされるたびにユーザーがアプリを削除して再インストールする必要はありません。
この段階では、データベースに事前にデータを入力し、心配なく毎月更新できるようにする他のアイデアを受け入れます。(アプリを最初から書き直してもかまいません)。
どんな助けでも大歓迎です。[私のマークダウンの習熟にだまされないでください、私は初心者です ;) ]