使用后将CoreData模型添加到现有项目中
File > New > File... > Core Data > Data Model
我无法编辑模型.该项目现在包含.xcdatamodeld包引用,但在Project Navigator中单击它与单击文件夹或组具有相同的效果,当前编辑器不会更改.右键单击引用并选择"打开为">列出没有潜在的编辑器.此外,打开文件检查器面板仅列出"身份""目标成员身份"和"文本设置"的设置,它不会列出"核心数据模型"或"版本化核心数据模型"的设置
这并不会对XCodes识别文件类型的能力产生任何影响,但我还在构建阶段引用了CoreData.framework,并在AppDelegate中包含了必要的Core Data属性.
奇怪的是我在Finder中打开了.xcdatamodeld包来暴露内部.xcdatamodel(注意没有尾随'd').双击该文件将按预期使用Core Data Model Editor打开XCode.
甚至更奇怪的是,我创建了一个新的投影并点击了"使用核心数据"复选框.这样做允许我通过在Project Navigator中选择.xcdatamodeld引用来编辑数据模型.因此,我的机器和XCode能够并配置为编辑CoreData文件.
就好像XCode无法使用核心数据,除非原始项目是使用"使用核心数据"复选框创建的.
有没有人遇到过这个问题,你能解决它,以及如何解决?
谢谢!
Ada*_*uer 31
原来我试图将数据模型添加到一个组,该组引用了一个特定的文件夹来存储它的子项.但该文件夹不存在.这会导致XCode将数据模型放在项目根目录中,但同时将其引用为驻留在项目根目录上的2个目录.甚至更奇怪的是,XCode没有将文件显示为缺失,而是将其显示为红色.无论哪种方式,XCode在Project Navigator中单击时都会忽略该文件,因为它确实不存在于它认为的位置.故事的道德是:检查文件路径和配置的组路径.
Cli*_*rum 29
我今天遇到了这个问题,问题是我的.xcdatamodel文件被打包在里面(奇怪,我知道).以下是我修复它的方法:
File.xcdatamodel在Finder中找到了我的文件.File.xcdatamodel.我把它复制到我的桌面.终于解脱了.:)我希望这有助于其他人.
我们真正的问题是 Xcode 在创建新版本时无法打开/验证数据模型。含义:先有一个 .xcdatamodel,然后Editor > Add Model Version... > MyProject 2(如 .xcdatamodel)。之后,MyPoject.xcdatamodel d已创建,但无法打开。
经过几个小时的调查后,我们发现 .xcurrentversion 文件和XCVersionGroup项目文件中的 .xcurrentversion 文件丢失或无效。原因之一是 xcdatamodel d版本应该位于根文件夹中。
创建一个新的模型版本并:
Group为先前版本所在的子目录。新的 .xcdatamodel d现在可以在 Xcode 上运行,但不能移动到根文件夹以外的任何地方。
要在子文件夹中包含有效的 .xcdatamodel ,您必须按照以下步骤手动修改项目文件:
PS:这是我写过的最复杂和最hacky的答案。对不起 :(
project.pbxproj在文本编辑器中打开该文件。fileId.例子:
75F3199D1B9D80D50030FF46 /* MyProject 2.xcdatamodel in Sources */ = {isa = PBXBuildFile; fileRef = 75F319981B9D80D50030FF46 /* MyProject 2.xcdatamodel */; };
// fileId = 75F3199D1B9D80D50030FF46 /* The first id at the beginning of the line */
Run Code Online (Sandbox Code Playgroud)
PBXBuildFile部分移动到该部分的开头PBXFileReference,然后像这样更新它们(重用fileId)。例子:
75F3199D1B9D80D50030FF46 /* MyProject 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "MyProject 2.xcdatamodel"; sourceTree = "<group>"; };
Run Code Online (Sandbox Code Playgroud)
MyPoject.xcdatamodeld现在在该部分中搜索文件PBXBuildFile并复制其fileRef.例子:
75F319961B9D7FA50030FF46 /* MyProject.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 75F319931B9D7FA50030FF46 /* MyProject.xcdatamodeld */; };
// fileRef = 75F319931B9D7FA50030FF46
Run Code Online (Sandbox Code Playgroud)
project.pbxproj创建该XCVersionGroup部分并重fileRef用 xcdatamodel d和 all中的fileId。示例(无//注释):
/* Begin XCVersionGroup section */
75F319931B9D7FA50030FF46 /* MyProject.xcdatamodeld */ = { // fileRed
isa = XCVersionGroup;
children = (
75F3199D1B9D80D50030FF46 /* MyProject 2.xcdatamodel */, // fileId
75F319A11B9D80D50030FF46 /* MyProject.xcdatamodel */, // fileId
);
currentVersion = 75F3199D1B9D80D50030FF46 /* MyProject 2.xcdatamodel */; // fileId of the current version
name = MyProject.xcdatamodeld;
path = Path/To/MyProject.xcdatamodeld; // set the correct path
sourceTree = "<group>";
versionGroupType = wrapper.xcdatamodel;
};
/* End XCVersionGroup section */
};
rootObject = 7564EB681B4AB1560065394B /* Project object */;
} /* EOF */
Run Code Online (Sandbox Code Playgroud)
抱歉回答太长...但问题已经解决了:D
| 归档时间: |
|
| 查看次数: |
6324 次 |
| 最近记录: |