XcodeでCoreDataのテーブルを変更すると変更前のデータを使うことができません。
既にAppStoreにリリースしている場合、バージョンアップして変更前のデータが使えなくなるのは困ります。
そこで、今回はCoreDataの自動マイグレーション機能を使って、変更前のデータを引き継ぎながら変更後のCoreDataテーブルを使用できる方法を書きます。
1.自動マイグレーションを有効にする。
AppDelegete.swiftファイルに以下の記述を追加します。
// optionsを追加
let options = [NSMigratePersistentStoresAutomaticallyOption: true,NSInferMappingModelAutomaticallyOption: true]
if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: options, error: &error) == nil {
2.新しくCoreDataモデルを追加する。
.xcdatamodeldファイルを選択している状態でEditor→Add Model Version...を選択。
Version nameに新しいモデル名称を入れて、Based on modelに今までのデータモデルを選択します。

新しいデータモデルにチェックが付いている事を確認します。

古いデータモデルにチェックが付いていた場合は、Model VersionのCurrentを新しいモデルバーションに変更することでできます。

そして、新しいデータモデルに追加や変更を行います。
3.Mapping Modelを追加する。
どのデータからどのデータに移行するのかを定義するMapping Modelを追加します。
File→New→File...と選択し、Core DataのMapping Modelを選択してNext。
Mapping Model Source Data Modelで移行元のデータモデルを選択してNext。
Mapping Model Target Data Modelで移行先のデータモデルを選択してNext。
作成するファイル名を入力してCreateします。
.xcmappingmodelというファイルが作成されればOKです。
以上でデータ移行の手順は終わりです。
新しいデータモデルにAttributeを追加した場合は、以前のデータを読み込んだ時にはnullとなっているので気をつけてコーディングしましょう!
「巻数メモ」アプリをバージョン1.1にアップデートしました!
その時にCoreDataのデータ移行の方法が分からなかったのでメモです。
自動マイグレーションという便利な機能があって良かった。

巻数メモ
既にAppStoreにリリースしている場合、バージョンアップして変更前のデータが使えなくなるのは困ります。
そこで、今回はCoreDataの自動マイグレーション機能を使って、変更前のデータを引き継ぎながら変更後のCoreDataテーブルを使用できる方法を書きます。
1.自動マイグレーションを有効にする。
AppDelegete.swiftファイルに以下の記述を追加します。
// optionsを追加
let options = [NSMigratePersistentStoresAutomaticallyOption: true,NSInferMappingModelAutomaticallyOption: true]
if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: options, error: &error) == nil {
2.新しくCoreDataモデルを追加する。
.xcdatamodeldファイルを選択している状態でEditor→Add Model Version...を選択。
Version nameに新しいモデル名称を入れて、Based on modelに今までのデータモデルを選択します。

新しいデータモデルにチェックが付いている事を確認します。

古いデータモデルにチェックが付いていた場合は、Model VersionのCurrentを新しいモデルバーションに変更することでできます。

そして、新しいデータモデルに追加や変更を行います。
3.Mapping Modelを追加する。
どのデータからどのデータに移行するのかを定義するMapping Modelを追加します。
File→New→File...と選択し、Core DataのMapping Modelを選択してNext。
Mapping Model Source Data Modelで移行元のデータモデルを選択してNext。
Mapping Model Target Data Modelで移行先のデータモデルを選択してNext。
作成するファイル名を入力してCreateします。
.xcmappingmodelというファイルが作成されればOKです。
以上でデータ移行の手順は終わりです。
新しいデータモデルにAttributeを追加した場合は、以前のデータを読み込んだ時にはnullとなっているので気をつけてコーディングしましょう!
「巻数メモ」アプリをバージョン1.1にアップデートしました!
その時にCoreDataのデータ移行の方法が分からなかったのでメモです。
自動マイグレーションという便利な機能があって良かった。

巻数メモ