1

私はアプリのアップデートに取り組んでいますが、このバージョンは完全にゼロから構築されており、完全に新しいcoreDataモデルスキーマがあります。coreData古いモデルからの移行を作成する必要があります。移行を作成するためのリソースを検討してきましcoreDataたが、すべて古いモデルファイルが必要です。このバージョンは完全に新しいので、古いモデルスキーマはありません。

ユーザーがアプリを更新したときに古いモデルをダンプするように移行を作成する方法はありますか?

前もって感謝します

4

3 に答える 3

3

古いアプリをお持ちの場合は、AppBundleに含まれているコンパイル済みモデルファイルからモデルを再作成できます。

  • 必要に応じて、アプリをiTunesに同期します。
  • Ctrlキーを押しながらiTunesでアプリをクリックし、「Finderに表示」を使用して「YourApp.ipa」ファイルを見つけます。
  • 「YourApp.ipa」を一時ディレクトリにコピーし、コマンドラインで「unzipYourApp.ipa」を使用してアーカイブを抽出します。
  • 抽出された「Payload/YourApp.app」フォルダーには、ファイル「XXX.mom」(XXXはモデルの名前)を含む「XXX.momd」フォルダーがあります。これはコンパイルされたモデルファイルです。
  • Xcodeプロジェクト(または一時プロジェクト)で、新しい「データモデル」ファイル「XXX.xcdatamodeld」を作成します。
  • このファイルを選択し、メニューから「エディタ->インポート...」を選択します。
  • インポートダイアログで、上から「XXX.mom」ファイルを選択します。
于 2012-11-09T14:45:29.700 に答える
0

古いモデルスキーマがないと、移行を実行できません。まあ、それは一種の論理的です。

認識できる唯一のオプションは、古いモデルスキーマをリバースエンジニアリングして、そこから取得することです。

次に、エンティティ、属性、および関係を追加/削除/変更して、新しいスキーマを構築します。

既存のストアからデータを抽出できる場合は、カスタムエクスポート関数を記述して、新しいコアデータストアに挿入するだけです。

于 2012-11-09T13:09:31.967 に答える
0

純粋なsqliteSELECTを使用して古いデータベースを読み取り、coredataモデルを介して新しいデータベースにデータを挿入することで移行を実行できます。並行ソフトウェアからデータをインポートするために、ソフトウェアでこれを作成しました:)

于 2012-11-09T22:42:04.127 に答える