如何在Xcode中删除旧的/未使用的数据模型版本


163

如何删除Xcode中的旧数据模型?该菜单上的选项被禁用。(我要删除的模型尚未公开发布-它们是临时开发模型。)


您是否意味着禁用了“编辑”菜单下的“删除”选项(同时在文件检查器中选择了旧的数据模型文件)?还是您完全是其他意思?
Michael Dautermann 2011年

是的,“编辑”菜单下以及右键单击右键的菜单(以及我可以找到的任何菜单)下的删除选项均被禁用。我知道有些人将使用以前的xcode删除旧的/未使用的版本,但是我没有安装。
SAHM

迈克尔,您能在xCode 4中做到这一点吗?
SAHM

是的...我从未见过针对我的任何XCode 4项目禁用了“删除”菜单选项。
Michael Dautermann

专门针对xcdatamodel?其他人在删除xcdatamodels XCode 4时也遇到了同样的问题。我只是没有看到发布的解决方案。
SAHM

Answers:


374

这是一个hack,但这对我有用:

  1. 在Xcode中将模型的当前版本设置为您想要保留的版本
  2. 从项目中删除.xcdatamodeld(右键单击->删除-> 删除仅参考
  3. 在Finder中显示.xcdatamodeld包的内容(右键单击->显示包内容)
  4. 删除不再需要的.xcdatamodel文件
  5. 将.xcdatamodeld文件重新添加到您的项目中

这样就无需手动修改任何项目元数据文件。


2
我尝试了这项技术,发现由于我的模型版本的命名方式,模型版本被不正确地重新排序,并且在将xcdatamodel文件重新添加到项目中时选择了错误的默认版本。这可能是因为我最多有38个模型版本,而我没有更改默认的版本名称,所以这些版本的名称为“ MY_APP 37.xcdatamodel”。我想删除38。在导入时,它按词法顺序被拉出,这意味着“ MY_APP 10.xcdatamodel”是第一个,并被选择为默认值。就我而言,这并不理想。
迈克

1
迈克-对我来说同样的问题,尽管我能够在文本编辑器中在project.pbxproj中重新排序,而没有任何大的戏剧性。还是不理想。
伊恩·克肖

1
这不适用于Xcode 5.1.1。以前,随着许多小的模型更改和增加的模型版本号,轻量级自动迁移可以正常工作。但是,在尝试使用此方法删除所有无关的“仅开发”模型后,出现错误:“错误:找不到或自动推断要迁移的映射模型”。
Dalmazio 2014年

1
在6.4中,没有删除引用的选项。它刚刚被删除。其余步骤似乎奏效
noobsmcgoobs 2015年

1
这似乎可以在Xcode 10.2.1中使用。我的迁移是一些属性名称更改,所以没什么大不了的。
加文

35

我刚刚发现需要这样做。我创建了一个新的模型版本,然后意识到我根本不需要它。我很惊讶地发现没有办法从Xcode中删除它(我可以找到)。不过,要删除它,我执行了以下操作:

首先,我确定它不是我当前的模型版本。然后,我转到Finder,找到了我的* .xcdatamodeld文件。右键单击并在其上显示包装内容。在这里,您将找到实际的模型文件并可以将其删除。

这仍然不会将其从Xcode中删除,并且在“文件和组”中将显示为红色。要阻止这种情况的发生,请返回Finder并在* .xcodeproj主文件上显示软件包内容(您可能要确保先备份了此文件)。在其中打开并编辑project.pbxproj,以您的模型版本名称为例,在本例中为“ interval 8”。对我来说,它出现在两条单独的线上。我删除了这些行,现在它已从Xcode中完全删除。


1
@Daniel_Wood,是的,我也找到了手动操作的方法,但要当心。这可能会导致一些问题。我不得不重复执行几次,它有时还会切换活动和非活动版本,然后当您重置正确的版本时,它不会移动到列表顶部(有时)会导致更多问题!非常感谢您的投入。他们将删除此功能似乎很奇怪-我们永远都不要进入.xcodeproj文件!
SAHM

2

这在XCode 10.3中为我工作,而在删除整个模型并再次添加它时没有出现排序问题:

  1. 选择除您要删除的型号以外的任何型号版本。
  2. 在XCode中,右键单击.xcdatamodeld文件,然后选择“在Finder中显示”。
  3. 关闭XCode。
  4. 在finder中,右键单击相同的文件,然后选择“显示包内容”。
  5. 写下要删除的模型的名称,然后从Finder中删除它。
  6. 仍在Finder中,导航到项目文件(.xcodeproj)。
  7. 右键单击并使用Atom打开或任何其他编辑器。
  8. 在“项目”窗格中,打开project.pbxproj文件。
  9. 删除所有包含删除的模型名称的行(例如:“ ABC 17.xcdatamodel”)。您会发现两行类似于以下内容:

    9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * / = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; 路径=“ ABC 17.xcdatamodel ”; sourceTree =“”; };

    9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * /,

    请注意,如果找到第三行,它将类似于:

    currentVersion = 9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * /;

    这意味着它是当前选择的模型。切勿删除此行。只需将文本更改为另一个模型版本即可。

  10. 重新打开XCode。


-4

我的回答根本不是针对特定问题的,但它很快且有效。对于那些使用git的人。您可以只丢弃未分段的更改。

git stash save --keep-index

然后,您可以根据需要使用git stash drop命令删除该存储区。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.