.xcdatamodeld文件未在Xcode中显示数据模型结构

时间:2013-03-12 19:22:25

标签: ios xcode macos core-data watchkit

我的项目中有.xcdatamodeld文件,但它没有打开数据模型。

当我点击Xcode左侧边栏中的文件时,它会继续显示以前选择的文件的内容,而不是显示数据模型。同样,当我右键单击该文件并选择“打开为>”时,我无法选择将其显示为数据模型 - 没有任何内容出现。我查看了SVN repo中的代码,甚至文件管理员所有者也无法在他的工作区中看到它。

7 个答案:

答案 0 :(得分:12)

这是我不时看到的症状。至少在一种情况下,这是由于Xcode在project.pbxproj文件的path部分的XCVersionGroup组件中存储了错误的路径,并且显然没有必要的额外name组件在那一节。可能手动编辑这个文件,但我总是不愿意直接使用项目文件,幸运的是,这是一种更简单的方法。

  1. 导航到Finder中的.xcdatamodeld文件。最简单的方法是右键单击/按住Ctrl键并单击.xcdatamodeld文件,然后选择"在Finder中显示"。
  2. 将文件从Finder拖放到Xcode项目的Project Navigator中.xcdatamodeld的当前引用的上方或下方。
  3. 单击“确定”接受导入,确保将其添加到正确的目标。 (哪些目标是正确的取决于您的项目。)
  4. 现在,您将在Project Navigator中对同一文件进行两次引用。点击它们的 现在将显示所需的数据模型结构。
  5. 删除对模型文件的重复引用。单击其中一个文件引用(看起来不重要,但删除旧文件可能更好)并按Delete。
  6. 在出现的确认对话框中,请务必选择"删除参考"只是,不要将文件移动到垃圾箱。 (这两个引用只指向文件系统中的一个实际文件。移动到垃圾箱会因此删除唯一的副本。)
  7. 您现在只剩下一个对数据模型的引用,它可以正常工作。

    似乎触发此错误的一件事是将.xcdatamodeld文件移动到磁盘上的文件结构中。即使在正确地将文件与新位置重新关联之后(即,侧栏中的红色不再显示),上面提到的Project文件的一部分也未正确更新,因此文件未被完全正确地处理为Xcode数据模型文件。

答案 1 :(得分:5)

我在Xcode 6.3中遇到了同样的问题

对我有用的唯一解决方案是将.xcdatamodeld文件移出我的'Resources'文件夹并移入Xcode项目资源管理器中的项目根文件夹(文件系统上的位置不物质)

我仍然不确定为什么,只是在项目结构中移动文件的位置导致它在点击时根本不显示..但显然,至少在我的设置中,它不喜欢住在资源文件夹..

答案 2 :(得分:4)

出于某些黑暗的原因,有时Xcode需要将xcdatamodel d fiel放在根文件夹中。 我写了一个答案here来解释如何执行此操作,但也提供了一个解决方法,可以将此文件放在您想要的位置。

干杯!

答案 3 :(得分:2)

.xcdatamodeld文件是一个包。它包含.xcdatamodel个包,每个版本的模型一个。每个.xcdatamodel内都有一个contents文件,它是一个带有实体描述的 XML 。要查看包中的内容,请在Finder中右键单击它们,然后选择显示包内容选项。

Show Package Contents in Finder

也许您没有将contents文件添加到您的存储库中。这样,当您从中创建全新的工作副本时,您将无法看到您的模型。

答案 4 :(得分:2)

我今天在Xcode8上遇到了这个问题。

我只是将xcdatamodeld文件放在Project导航器(左窗格)中的任何组之外来解决它。一旦我把它移到一个小组中,我就再也无法打开小家伙。

答案 5 :(得分:1)

我遇到了与Xcode 7.3.1类似的问题。

事实证明这与数据模型包的配置方式有关。

我发现有一个嵌入式模型包嵌套在另一个中。让我们说一个名为FolderNodes.xcdatamodeld的顶级数据模型,其中包含另一个名称完全相同的文件夹... FolderNodes.xcdatamodeld。 Inside FolderNodes.xcdatamodeld是具有模型信息的实际内容文件。

我的解决方案是将嵌入式软件包FolderNodes.xcdatamodeld(编号2)拖入Xcode项目而不是其封闭文件夹。

Apple使用该软件包进行版本控制,但我认为与移动数据模型文件相关的逻辑会以某种方式打破原始软件包,从而创建一个冗余的包装器。

答案 6 :(得分:1)

确保您的Version Editor无效。

打开Data Model会导致显示xml代码,而不是Data Model。您也无法在Project Navigator中的xcdatamodeld文件的上下文菜单中选择WebClient