各モデルがどのモデルに基づいているかを確認し、場合によっては変更したいと思います。Xcodeでこれを行う場所を見つけることができませんでした。新しいモデルバージョンを作成し、それが基づいているモデルを選択すると([エディタ/モデルバージョンの追加...]を使用し、[モデルに基づく]ドロップダウンで前のモデルを選択する)、方法がないようです。選択内容を確認するか、変更してください。
.xcdatamodeldファイルと.xcdatamodelファイルはパッケージであり、右クリックして[パッケージの内容を表示]をクリックすると、それらを調べることができます。.xcdatamodelファイルには「contents」という名前のXMLファイルが含まれていますが、以前のモデルのバージョンはないようです。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model name="" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1811" systemVersion="11G63" minimumToolsVersion="Automatic" macOSVersion="Automatic" iOSVersion="Automatic">
<entity name="Settings" syncable="YES">
<attribute name="filterOrderArray" optional="YES" attributeType="Transformable" syncable="YES"/>
</entity>
<elements>
<element name="Settings" positionX="160" positionY="192" width="128" height="60"/>
</elements>
</model>
また、プロジェクトの.xcodeprojファイル(これもパッケージ)を調べたところ、project.pbxprojファイルに次のものが含まれていることがわかりました。
/* Begin XCVersionGroup section */
CFE0A83E164F6CF40000C765 /* Filters.xcdatamodeld */ = {
isa = XCVersionGroup;
children = (
CFE0A841164F6D100000C765 /* Filters 1.3.xcdatamodel */,
CFE0A83F164F6CF40000C765 /* Filters 1.2.xcdatamodel */,
);
currentVersion = CFE0A841164F6D100000C765 /* Filters 1.3.xcdatamodel */;
path = Filters.xcdatamodeld;
sourceTree = "<group>";
versionGroupType = wrapper.xcdatamodel;
};
/* End XCVersionGroup section */
繰り返しになりますが、これらの16進文字列でない限り、以前のバージョン情報はありませんが、Xcode / Project Navigationの.xcdatamodelファイルの順序は、「children」パラメーターによって決定されるようです。
また、モデルバージョンの名前を変更すると、以前のバージョンの接続が切断され(バージョンの順序だけでなく、どこかに保存されていることを示します)、initWithContentsOfURLがnilモデルを返すこともわかりました。
NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
したがって、私が知る限り、モデルが作成された後、モデルがどのモデルに基づいているかを表示または変更することはできません。モデル階層をクリーンアップする必要がある場合は、効果的に最初からやり直して、必要な各バージョンを再作成する必要があります(少なくとも、古いモデルからエンティティをコピーできるため、完全に最初からやり直す必要はありません)。