変更するべき箇所。
1. AppDelegate
(NSManagedObjectModel *)managedObjectModel メソッドで定義するNSURLのパスの名前を変更。
例
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Hoge" withExtension:@"momd"];
(NSPersistentStoreCoordinator *)persistentStoreCoordinator メソッドで定義するsqliteのパスの名前を変更。
例
NSURL *storeUrlFirst = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Hoge.sqlite"];
2. xcdatamodeld
2.1 Xcodeの左ペイン上のxcdatamodeldの名前を変更。
2.2 xcdatamodeldのパスを変更。
(1) Xcodeの左ペイン上のxcdatamodeldを選択してインスペクタを開き、Identity and TypeタブでLocationの右側にあるフォルダアイコンをタップして、xcdatamodeldの実体ファイルがどこにあるかを確認。
(2) Finderで上記(1)のファイルを開いてxcdatamodeldを選択し、右クリックして「パッケージの内容を表示」を選択。
(3) 上記(2)の操作で現われた xcdatamodelファイルを複製し、複製したファイルの名前を変更する。
(4) Xcodeに戻り、再びxcdatamodeldを選択してインスペクタを開き、Identity and TypeタブでLocationの右側にあるフォルダアイコンをタップして、xcdatamodeldの実体ファイルがあるフォルダを開く。
(5) 上記(2)操作で複製して名前を変更したファイルが表示されるので、このファイルをxcdatamodeldの実体ファイルとして選択する。
(6) XcodeのProductメニューからClean Build Folderを実行、Build & Runしてクラッシュしないことを確認する。
(7) 上記(2)の操作を再び実施し、複製前のxcdatamodelファイルを削除する。
ネットでxcdatamodeldをrenameする場合の手順を記した記事を探すと、上記(2)の操作で現われた隠しファイルの.xccurrentversionファイルの_XCCurrentVersionNameキーを変更すると記されているのだが、この手順は古く現在では通用しない。
既存のxcdatamodelファイルをxcdatamodeldの実体ファイルとして選択していると、_XCCurrentVersionNameキーを変更していてもXcodeを再起動したときに_XCCurrentVersionNameキーが元の名前に戻ってしまいアプリがクラッシュしてしまう。
xcdatamodeldの実体ファイルの名前を変更していても同じ現象となる。
Xcode 13.1 時点では、複製したxcdatamodelファイルをxcdatamodeldの実体ファイルに選択する必要がある。
この操作により、xccurrentversionファイルの_XCCurrentVersionNameキーは複製したxcdatamodelファイルの変更した名前で上書きされるようになる。
参考記事:
https://stackoverflow.com/questions/5621178/rename-xcdatamodel-file
https://stackoverflow.com/questions/17631587/xcode-modifies-current-coredata-model-version-at-every-launch