2017-04-18 6 views
0

私のアプリは最初のリリースv1には最適です。Coredataの移行のためにappstoreから更新した後、アプリケーションがクラッシュする

2番目のリリースv2では、コアデータの移行中に間違いを犯しました。私は間違いなく、自分のコアデータでエンティティの名前を変更しました。それが更新されるとアプリがクラッシュしていたのですが、新しくv2バージョンをダウンロードしたときに動作しています。

このクラッシュを修正するには、次のリリースv3ではどうしたらよいですか?

エンティティの名前変更IDを空にすると、v1 - > v2 - > v3のアプリが更新されます。

しかし、ユーザーがv2を新しくダウンロードした場合、再びクラッシュします。

この問題の回避策を教えてください。前もって感謝します。

答えて

0

コアデータを使用軽量移行。軽量の移行は、管理対象オブジェクトモデルを頻繁に変更するアプリケーション開発の初期段階で特に便利ですが、テストデータを再生成する必要はありません。移行する必要のあるストアを作成するために使用されるすべてのモデルバージョン用のカスタムマッピングモデルを作成することなく、既存のデータを移行できます。

コアデータが自動軽量移行を実行するにはマッピング

を推測することができなければなりません、Core Dataは、実行時に送信元と送信先管理対象オブジェクトモデル自体を見つけることができるようにする必要があります。 Core Dataは、NSBundleのallBundlesメソッドとallFrameworksメソッドによって返されるバンドル内のモデルを探します。他の場所にモデルを保存する場合は、「モデルが自動的に検出されない場合は、Migration Managerを使用する」で説明されている手順に従わなければなりません。コアデータは、永続エンティティおよびプロパティに対するスキーマの変更を分析し、推定されたマッピングモデルを生成する必要があります。コアデータが推測されたマッピングモデルを生成することができるようにするには

、変更は例えば、明白な移動パターンに適合しなければなりません:新しい属性の

  • シンプル加え
  • 属性の
  • 除去
  • 省略可能な属性がオプションになる
  • 省略可能な属性が非オプションになり、デフォルト値を定義する 値
  • エンティティまたはpの名前を変更するroperty

出典:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweightMigration.html

+0

私はcoredata軽量移行を使用しています。私の問題はv2からv3への移行をどのように処理するのか。 v1からv2への移行は機能します。 – MBN

+0

あなたはv2バージョンを新しくダウンロードするときに動作していると言っています。コアデータの移行を使用した場合は、v2からv3に移行する際にクラッシュしないでください。 –

+0

次のリリースでは、名前変更IDを同じにしておく必要があります。 IDを省略して公開していると、クラッシュします。 – MBN

関連する問題