2012-02-13 10 views
1

を使用しないでください。しかし、過去の週に私は私のモデルの完全なオーバーホールをしなければならなかったし、方法は、それは私が任意のデータを移行することはできませんということに反応します。iOSのは、私はその上のプロジェクトは、コアデータを使用して、私は移動私は私のモデルに小さな変更を行うために必要なときのために実装されていた持っている古いコアデータモデル

私は、デバイスに、おそらく持っているモデルのどのバージョンを確認する方法があった場合は、コードを、それを削除思っていた。これにより

、完全にゼロから新しいものを作成します。これは最も好ましい方法ではないかもしれませんが、他の誰かより良い解決策がある場合は、私は提案に開放しています。

答えて

4

つの合理的なオプション:

  • 使用NSManagedObjectModelの通常のバージョン管理mechansim。あなたの新しいモデルのバージョンアップ。コアデータは、ストアを開く前に、特定のストアがアプリ内のモデルのいずれかと互換性があるかどうかを自動的にチェックします。そうでない場合は、追加しようとするとエラーが表示されます。したがって、アプリで古いモデルを提供しない場合、Core Dataは古いストアを使用しません。ストアを削除することで、エラーに応答することができます。 -isConfiguration:compatibleWithStoreMetadata:を使用して店舗を追加する前に確認することもできます。詳細については、Initiating the Migration Processを参照してください。

  • は、新しいモデルを使用して作成した店舗に別の名前を使用してください。 iOSアプリで特定の名前のストアを1つまたは2つだけ使用することは珍しくありません。以前のバージョンのアプリで店舗に使用した名前はおそらく分かっています。別の名前に切り替えると、店舗が古いモデルと新しいモデルとの互換性があるかどうかを簡単に知ることができます。私は最初のオプションを使用しに行くかどう

+0

?デバイスに特定のバージョンIDを含むコアデータsqliteファイルが含まれているかどうかを確認しますか? – Seb

+0

不明なことに申し訳ありません - 私はこの回答の最初のバージョンを非常に迅速に書いています。私はより明確に説明しようとする答えを変更しました。それが役に立てば幸い。 – Caleb

+0

答えをありがとう。それは今私にはっきりしており、より意味があります。 – Seb

0

古いプロパティの一部は、新しいモデルには存在しないように、respondsToSelctor使用してみてくださいプロパティを変更した場合は、次のエンティティが古いセレクタに応答するかどうかをチェックする方法を。もしそうなら、あなたは古いモデルを持っています。

関連する問題

 関連する問題