2017-01-23 2 views
0

私はライブの新しいバージョンのアプリケーションを作成しています。既存のコアデータのデータやモデルを保持したくないので、これを行う最も簡単な方法は、既存のデータをサイドステップして新しい名前のストアを作成することだと思いました。私はFailed to load NSManagedObjectModel with URL 'file:///var/containers/Bundle/Application/.../MyApp.app/MyAppV2.momd/'Core Dataの名前が変更されたため、NSManagedObjectModelが読み込まれません。

:私は、私が実行したときに、私は次のエラーを取得する、今

let container = NSPersistentContainer(name: "MyAppV2")

let container = NSPersistentContainer(name: "MyApp")

MyAppV2.xcdatamodeldにファイルMyApp.xcdatamodeldの名前を変更し、ラインiOS 10を使用しています。

Am I goiこれについて間違ったやり方があるのですか、それとも何か変わる必要がありますか?

多くのありがとうございます。

+0

xcodeからモデルバージョンを設定していますか? –

+0

私はそうは思わない。どうすればいい?する必要がありますか?私は古いアプリから何かを移行したくない。これは、コアデータを持つiOSの空のプロジェクトテンプレートから完全に書き直されたものです。 –

+1

モデルファイルはプロジェクトに含まれていますか?それがコピーされていることを確認するために構築段階を確認しましたか?フレームワークを使用していますか?その場合、モデルはNSPersistentContainerが見えるメインバンドルにありません。プロジェクトから削除して元に戻したり、モデルへのポインタを手動で渡したりすることができます。 –

答えて

-1

最も簡単な方法は、名前を変更しないことです。モデルを必要なものに変更するだけで、既存のデータベースとの互換性がなくなり、ユーザーが初めて新しいバージョンのアプリケーションを実行したときに壊れてしまうはずです。

名前を変更したい場合は、アプリから古いストアを完全に削除し、新しい名前で新しいストアを追加することをおすすめします。 MyApp.xcdatamodeldは実際にはファイルではなく、いくつかのネストされたフォルダとファイルを含むパッケージなので、簡単に名前を変更することはありません。

+0

コアデータが自動的に既存のデータを吹き飛ばすわけではありません。モデルが一致しないことを検出すると、コードを記述する必要があります。 –

+0

は自動的には意味しません。とにかくそのコードが必要な場合、破損しているか互換性のないDBを持つユーザーのための回復はありません。 – trapper

+0

あなたの答えはより意味があります。私は私の下投票を逆転させます。不一致を検出してDBを削除するサンプルコードを含めると便利でしょうか? –

関連する問題