1

必要に応じてアプリを更新できるようにするプロセスをアプリケーションに実装しようとしています。更新とは、デバイスに新しいアプリケーション .ipa をダウンロードすることを意味します。

問題は、最初の起動時に持ち込まれたサーバー データを格納するために CoreData を使用していることです。古いバージョンと新しいバージョンの間に、いくつかのエンティティといくつかの古いエンティティの属性を DB に追加しました。移行を処理する方法や、構造が変更されたときにデータベースを再作成する機能を提供できるものがわからないため、競合が発生します。

今のところ、同じ DB 構造でアプリケーションを更新すると、アプリは正常に動作しますが、変更すると、予想どおりアプリがクラッシュします。

何かご意見は?

4

2 に答える 2

2

一部のエンティティ/属性のみを追加した場合は、CoreData 軽量移行を使用できます。

1) xcdatamodeld ファイルを開いた状態で、エディタ メニューから新しいバージョンのスキーマを追加します。

2) 新しいエンティティ属性をこの新しいスキーマ バージョンに追加します。

3) xcdatamodeld オプション (左ペイン) で、新しいスキーマ バージョンをアクティブなバージョンとして設定します。

4) UIApplicationDelegate の persistStore 初期化メソッドでNSMigratePersistentStoresAutomaticallyOptionandを true に設定します。NSInferMappingModelAutomaticallyOption

これで、アプリを実行できるはずです。スキーマは、新しいデータベース構造に合わせて自動的に更新されます。これにより、データベースの内容も保存されます。おそらく、新しいバージョンの最初の起動を検出して、コードで実行したいことです。

于 2013-11-05T14:02:22.720 に答える