最近、Core Data の「軽量移行」に成功しました。しかし、これにはかなりの手間がかかることに気づきました。自動移行をトリガーするために必要な絶対最小値は何ですか?
「どのデータ変更に移行が必要か、さもないとクラッシュするか」という意味ではありませんが、それはいくつかの場所に書かれていますが、むしろ:
「コアデータを移行するために最低限行う必要があることのリストは次のとおりです」.
(FWIW - 以下は私が行ったことです。絶対に必要と思われるものもあれば、そうでないものもあります - どれがどれなのか疑問に思っています):
- Editor -> Add Model Version (名前を付けて保存)
- Utility Inspector -> Versioned Core Data Model: 最新のモデル バージョンを「現在」として選択
- 新しいテーブルを最新の Core Data Model に追加しました
- エディタ -> 新しい NSManagedObject サブクラスを作成 ...
- 私は mogenerator を使用しているので、人間とマシンのファイルを作成するために使用しました (上記で作成した新しいモデル ファイルを指すように少し構成した後、.xcdatamodeld パッケージ内に隠れています)、これらを上記の手順で作成したファイルと交換しました。 ( Core Data を実行している場合、 mogenerator はライブ セーバーです)
- 私のアプリの info.plist で、「バンドル バージョン文字列、短い」と「バンドル バージョン」を増分して変更しました。
- 必要なオプション NSDictionary を persistStoreCoordinator 初期化メソッドに追加しました ( [__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:optionsDict error:&error] )
NSDictionary *optionsDict = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES],
NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES],
NSInferMappingModelAutomaticallyOption, nil];
次に、以前のバージョンで新しいアプリを実行し、確かに、移行が機能し、すべてが桃色であったことを確認しました...しかし、それは多くの手順です-しかし、これまでのところ、それが最低限必要であるように見えます.
しかし、たとえば、info-plist のオプションはどれほど重要なのでしょうか? それらを変更しない場合、または 1 つだけ変更した場合、アプリは正しく移行されますか?
ありがとう