我想看看我的每个模型都基于哪种模型,并且可能会对其进行更改。我一直无法在Xcode中找到任何地方。看起来,一旦你创建了一个新的模型版本,并选择它所基于的模型(使用“编辑器/添加模型版本...”,并选择一个与“基于模型”下拉的前一个模型),没有办法看到你的选择或改变它。核心数据模型的模型是基于显示还是更改?
.xcdatamodeld和.xcdatamodel文件是软件包,您可以通过右键单击/“显示软件包内容”来检查它们。该.xcdatamodel文件包含一个名为“内容”的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 */
同样,没有以前的版本信息,除非它在这些十六进制字符串,但在Xcode中/工程通航.xcdatamodel文件的顺序似乎确实被确定“儿童”参数。
我还发现,重命名模型版本打破了以前版本的连接(这表明它是保存在某个地方,是不是版本只是顺序),如果你这样做initWithContentsOfURL会返回一个零模式:
NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
所以,据我所知,一旦创建模型,就无法查看或更改模型的基础模型。如果你需要清理你的模型层次结构,你必须有效地重新开始并重新创建每个需要的版本(至少你可以从旧模型中复制实体,所以你不是完全从头开始)。
谢谢,但我明白这一切。我一直在创建我的模型的新版本。有一次我有50个版本。大多数来自不同级别的测试,我不记得什么型号是基于以前的版本。我需要删除所有不需要的版本,并将它们重命名为更好的名称。问题不在于如何看待所有模型,而是如何判断模型的基础版本以及信息的存储位置。 – Symmetric
你有任何实际使用任何旧版本的应用程序吗?如果没有,你可以通过删除其他版本来清理。每个版本都是完整的结构,除了迁移以外,它不依赖于其他版本的存在。 – jrturton
哇,我刚刚不同意你的看法,即每个版本都是完整的结构,但我想到我可能对“添加模型版本”有什么误解。我认为当前选定的版本已被复制为新版本,稍后在编译.mom文件时或在迁移期间使用“基于模型”。我只做了一些测试,看起来实际上是复制的“基于模型”版本,而当前选择的模型仅用于将新版本定位到列表中。这解释了很多! – Symmetric