将文件移动到Xcode中的真实文件夹中


177

当我开始我的项目时,我很高兴在Xcode中使用Groups而不是文字文件夹:由于我在Xcode中使用浏览器来访问所有内容,因此东西组织得很好,我感到很高兴。

但是,既然要共享该项目以进行版本控制,对于试图通过终端对其进行扫描的人来说,该项目文件夹本身就是一个恐怖的展示,大约300个文件,其中一半以上是图形。

我现在正在尝试重新组织事物,创建真实文件夹并将其导入Xcode。不幸的是,Xcode不允许我像使用组那样与他们一起工作。例如,如果我右键单击一个实际添加的文件夹(蓝色,而不是黄色),然后选择添加现有文件,它实际上并没有将它们放在该文件夹中,而是将它们放在了其根目录中。

同样,我不能将文件从伪文件夹(一个组)移动到真实文件夹中:Xcode并不认为真实文件夹是将内容移动到的有效位置。

我想念什么?如何说服Xcode让我像使用组一样使用文件夹?这里有一个类似问题的答案,但是由于我正在使用现有文件,因此它实际上并不能解决我的问题。

Answers:


176

2017年的一种现代(非常简单!)方法(Xcode 6、7、8,有时甚至是9,因为它有时会自动执行):

如果要将一堆文件移动到新文件夹中并保持子层次结构,则实际上比分别移动每个文件要容易得多:

  1. 在Xcode文件夹树中创建新组,然后根据需要将文件组织到其中。
  2. 在Finder中创建匹配的物理文件夹树,并将您的物理文件组织到其中,以与您在步骤1中所做的匹配。
  3. 现在,Xcode中的所有引用都应为红色(确定!)。
  4. 在身份和类型管理器中,选择要重定位的Xcode中的,然后在信息窗格中单击文件夹图标:

  5. 在Finder选择对话框中,找到在步骤2中为该组创建的等效新文件夹。现在将自动重新发现该组中的所有文件!

那不是很好吗?对于创建的每个新群组,您最多必须重复执行这5个步骤一次(这比单独重新定位每个文件要好得多!)

奖励积分!

假设您不小心搞砸了,现在一堆文件变成红色,无法找到:选择多个已损坏的文件,并在步骤4的屏幕快照中使用相同的文件夹图标,找到包含这些文件的正确文件夹文件,它们将自动解决缺少的路径。


3
但是,这样做会使文件在Git中无法跟踪。当然,我总是可以读取文件,但是我缺少什么吗?
SleepNot

2
@jeraldo不确定您使用的是哪种git,但我从来没有遇到过这个问题。但是,您可以轻松做到git add .
brandonscript

我错过了一些东西,我不确定是什么。也许我不理解步骤(1)中“将文件整理到其中……”一词的含义?我认为这意味着“通过拖放或其他方式将文件添加到组中”。但是,如果我这样做,那么Xcode当然会识别文件,并且不会如步骤(3)所示以红色显示它们。知道我在做什么错吗?
hkatz

您是否像步骤2中那样移动物理文件?
brandonscript

1
啊,我想通了!步骤(2)对我来说有点太神秘了。如果要重写它,我会说“创建匹配的物理文件夹树,然后使用Xcode的在Finder中显示”命令来定位您在步骤(1)中添加到新组中的文件,然后物理移动这些文件到刚创建的文件夹中。” 那样的东西……
hkatz

119

进一步编辑于2017年6月: Xcode 9自动执行此操作,无需任何特殊工作。这个答案和布兰登的答案仅适用于Xcode 8及更早版本。

编辑于2016年12月:布兰登的答案现在是一个更好的解决方案。早在2010年创建此答案时,这是我能找到的唯一选择。我现在在下面建议布兰登的答案


事实证明,将文件移动到真实文件夹中当然是可能的,尽管并不是那么简单。

我从这里的一个问题(Xcode组织文件和文件夹,即核心数据模型对象-iPhone)中获得了基本信息,但是在此过程中学到了重要的知识。

流程

移动文件是一个包含两个子步骤的两步过程:

  1. 告诉Xcode您要将文件放在哪里

    • 右键/按住Control键并单击您要移动的文件或文件组,然后从出现的上下文菜单中选择“ 获取信息 ”。出现“ 组信息”或“ 文件信息”窗口。

    • 在“ 路径”区域中,单击窗口最右侧的“选择”按钮。出现一个对话框。

    • 导航到要将文件移动到的文件夹。如果需要,请创建一个新文件夹。单击对话框右下角的“ 选择”按钮,然后关闭“ 组信息/文件信息”窗口。

    • 该组中一个或多个文件的名称将变为红色,表示Xcode在您指定的位置找不到它们。

  2. 移动实际文件

    • 在Finder(或Git)中,将您在步骤1中选择的文件移动到您想要放入的实际文件夹中。

    • 切换回Xcode。文件/组应全部重新变黑。如果仍然有红色,则说明您没有将某些内容移到正确的文件夹中。

提示

在调整此项目中的〜300个文件时,我学到了一些重要的知识:

  • 一些文件拒绝以这种方式移动;也就是说,当您导航到新目的地时,“选择”按钮被禁用,“ 新文件夹按钮也被禁用。解决方案虽然不知道为什么会有所不同,但首先要使用Xcode将这些文件放入组中(右键/按住Control键并单击文件,然后选择Group,然后为组命名),然后移动分组到新位置。在Finder中实际移动了文件之后,您可以将它们从组中删除(通过将它们拖到新的父组/文件夹中并删除该组)。

  • 完成许多文件的步骤2之后,每隔几分钟停止并构建一次。该版本将告诉您到目前为止是否已拧紧任何东西,从而可以在造成太大损坏之前更轻松地回去修复它。

  • 如果文件不会移动到您想要的位置—我曾一度魔鬼般地移动了一些在Classes文件夹中早期创建的文件,则只需将它们从查找器中的旧位置拖到在方便的地方(如桌面)删除Xcode中对它们的引用,然后通过右键/按住Control并单击Add Existing Files选项重新导入它们。

  • 如果过去使用Xcode删除对文件的引用,但又没有将其移至该项目中的垃圾箱,那么您会发现这些文件不必移动,而只需放在那里即可。请注意,不要做我所做的事情,将我正在移动的当前文件组的名称与较旧的,不再链接的文件混淆,并坚持认为Xcode会导入它们,因为您认为它很密集。

希望这对将来的人有帮助。我感到惊讶的是,它既困难又棘手。


2
将所有文件都放在同一个目录中确实让我很烦。这次真是万分感谢!
柯蒂斯·希普利

您还可以:在Finder中随意重新排列目录结构,删除项目中的所有“红色文件”,然后使用“文件夹中的组”选项将它们全部重新添加到项目中
bshirley 2011年

@bshirley非常正确,如果主目录中的所有文件都需要在项目中,则可以节省大量时间。不幸的是,对于涉及多个人的项目或随着时间的推移发布了很多版本的项目,那里可能存在不应该添加到项目中的任何数量的文件。在这种情况下,您必须跟踪删除了哪些文件才能还原它们或类似的东西。
马修·弗雷德里克

11
在xcode 4中,我不得不做一些不同的事情-右键单击时没有看到任何上下文的“获取信息”链接。相反,我必须显示标识和类型视图(可能是我不知道的名称)。它是xcode4标题栏中视图选项中最右边的按钮。我先将文件移动到文件系统上,然后单击路径旁边的怪异图标,然后告诉xcode新文件在哪里。
埃文·庞

6
移动文件的问题在于,当文件已经处于SVN控制之下时,您需要确保使用诸如Versions或Cornerstone之类的应用来移动文件……否则,您将面临可怕的版本控制问题!我希望苹果公司能够抛弃“组”的想法,并将所有内容都保存在真实的文件夹中,例如Eclipse…
jowie 2011年

104

在Xcode 5或Xcode 6中:

  1. 在Finder中创建映射到您的网上论坛的文件夹
  2. 将文件移到Finder中的那些文件夹中
  3. 在左侧的Xcode侧栏中选择每个红色的文件
  4. 单击按钮“显示/隐藏实用程序”以显示右侧边栏(见图)
  5. 在“身份和类型”中,单击小按钮并选择文件位置(参见图)

在此处输入图片说明

干杯。


1
请注意某些用户,如果在预编译标题信息后发生错误,请执行“清理产品”,一切都会顺利进行!
量子

我在Xcode 5.1.1中采用了这种方法,将头文件移动到物理文件夹中。我可以移动文件。但是Xcode在构建项目时说“找不到文件”。能否请你帮忙。
Rashmi Ranjan mallick 2014年

22

我发现在这里解决XCode令人震惊的设计的最可靠方法是在Finder中组织所有文件,这有两个原因:

  1. Finder不会犯“错误”,与XCode的GUI不同
  2. 在Finder中组织好一切之后,您可以将整个Finder文件夹拖放到XCode中,而...完全可以实现您想要的功能

即使在移动现有XCode文件时,也可以更快地执行此操作:

  1. 在Finder中选择文件
  2. 在Finder中为他们创建一个文件夹
  3. 将它们拖放到文件夹中(自动移动它们)
  4. 将Finder文件夹拖放到Xcode中(自动:创建Xcode文件夹,将所有文件添加到Finder文件夹中)
  5. cmd-选择您现在在Xcode中看到的每个“红色”文件(因为它们已移动),然后按Delete键

注意:我从不使用“使用子组创建拖动的文件夹”选项,因为在XCode 3中,这常常是无可救药的,可能会损坏项目。苹果公司(IMHO)显然不会在内部使用此功能,否则,它永远不会被允许如此麻烦。如果苹果不使用任何东西,使用它通常也不安全-他们也不擅长测试:)


2
我明天要尝试..这是我一直在寻找的简单解决方案。他们为什么要这么难?如果它只是镜像文件系统,那就不会那么混乱了。谢谢!
delux247

这是我尝试的第四个解决方案,也是我只能使用xcode 5.1.1的解决方案。此外,由于某种原因,这不适用于我的任何类别。我必须将它们从字面上移至“废纸rash”,将其从“废纸rash”中取出,然后将它们重新添加到xcode中,最后它才起作用。
user3344977

21

有一个简单的设置和使用命令行工具-github中 提供的“ synx”可以完全满足这里的需求。

它重组finder中的Xcode项目文件夹,以匹配项目中的Xcode组。

您可以在这里找到它:https : //github.com/venmo/synx

更新: 默认情况下,XCode 9支持此功能。因此,不再需要使用其他工具!


很棒的工具,但是在较大的项目中会变得非常缓慢(可能需要几分钟才能完成工作),并且似乎不再受支持。
卢卡斯(Lukasz)

6

Xcode 9

似乎Xcode 9现在默认支持它。当您将文件从一个组移动到另一个组时,该文件也会从旧文件夹移动到新文件夹。这是在WWDC 2017中宣布的。



2

通常,我通常直接在Finder中将文件移动到目录中,然后在XCode的“获取信息”对话框中用红色名称修复文件:单击“选择...”按钮,然后选择文件的新位置。这是我要在XCode中移动文件时的第一个响应,并且可以正常工作。


1

从Xcode 4.5开始,当您拖动文件夹结构时,它会在Project Navigator中自动变成嵌套组。然后,如果您查看磁盘(例如,右键单击并选择在Finder中显示),则文件夹结构将保留。

我发现尝试修复旧项目中的内容只是一种痛苦。事实证明,仅删除这些文件并再次将其拖入要容易得多。


1

要在xcode 4.5中移动文件夹,我只是...

  1. 从xcode删除文件/组,然后选择“删除引用”。
  2. 进入finder并根据需要移动文件夹/文件。
  3. 完成后,我返回Xcode并选择File-> Add Files to {ProjectName}。
  4. 确保选中“将项目复制到目标组的文件夹(如果需要)”
  5. 确保选中“为任何添加的文件夹创建组”
  6. 确保为您的项目选中“添加到目标”

1

XCode 8最简单的技术。

假设您在逻辑组中具有文件A,B,C,但希望将它们移动到硬盘驱动器上的文件夹中。

  1. 通过Finder创建目标文件夹
  2. 使用“选项”窗格在XCode中添加文件夹(“文件”->“添加文件”)以选择“文件夹引用”(不是组)
  3. 将文件A,B,C从(旧)组拖到项目导航器中的(新)文件夹引用中。XCode会将文件移动到项目中和磁盘上的文件夹中。

做完了

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.