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

当我开始我的项目时,我很高兴在Xcode中使用组而不是文字文件夹:因为我在Xcode中使用浏览器来访问所有内容,所以东西很好地组织起来,我很高兴。

但是,现在该项目即将被共享用于版本控制,项目文件夹本身对于那些试图通过terminal进行扫描的人来说是一个恐怖节目,大约有300个文件,其中一半以上是graphics文件。

我正在尝试重新组织东西,创build真实的文件夹并将其导入到Xcode中。 不幸的是,Xcode不会让我像他们一样和他们一起工作。 例如,如果我右键单击一个实际添加的文件夹(蓝色,而不是黄色),并select添加现有的文件,它实际上并没有把它们放在该文件夹,它把它们放在它的根。

同样,我不能将一个文件从一个人造文件夹(一个组)移动到一个真正的文件夹:Xcode不认为真实的文件夹是有效的东西移动的地方。

我错过了什么? 我如何说服Xcode让我使用文件夹的方式来使用组? 这里有一个类似的问题的答案,但它实际上并没有解决我的问题,因为我正在处理现有的文件。

2017年的一个现代(和死的简单!)方法(Xcode 6,7,8,有时9,因为它自动地在一些时间):

如果您将一堆文件移动到一个新文件夹中并保留子层次结构,则实际上比单独移动每个文件要简单得多:

  1. 在Xcode文件夹树中创build新的组,然后按照自己的喜好将文件组织到其中。
  2. 在Finder中创build一个匹配的物理文件夹树,并将其中的物理文件组织到它们中,以匹配您在步骤1中所做的操作。
  3. Xcode中的所有引用现在都应该是红色的(没关系!)。
  4. 从“身份和types”pipe理器中,select要重定位的Xcode中的 ,然后单击信息窗格中的文件夹图标:

  5. 在Finderselect对话框中,find您在步骤2中为该组创build的等效新文件夹。该组内的所有文件现在将被自动重新发现!

这不是很好吗? 对于每个新创build的组,最多只能重复执行一次这5个步骤(这样可以单独重新分配每个文件!)

奖金积分!

说你不小心搞砸了,现在一堆你的文件是红色的,无法find:select多个文件已损坏,并使用从步骤4截图相同的文件夹图标,find正确的文件夹包含这些文件,他们会自动解决缺less的path。

进一步编辑2017年6月: Xcode 9自动执行此操作,不需要特别努力。 这个答案和Brandon只适用于Xcode 8和更早的版本。

编辑2016年12月:下面布兰登的答案是一个更好的解决scheme。 回到这个答案在2010年创build时,这是我能find的唯一select。 我现在在下面build议布兰登的回答 。


事实certificate,将文件移动到实际文件夹当然是可能的,尽pipe不是那么简单。

我从这里得到了一个问题的基本信息, Xcode组织文件和文件夹(核心数据模型对象 – iPhone) ,但是一路上学到了重要的东西。

过程

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

  1. 告诉Xcode你想要的文件是

    • 右键/按住Control键并点击要移动的文件或文件组,然后从出现的上下文菜单中select“ 获取信息 ”。 出现“ 组信息”或“ 文件信息”窗口。
    • 单击path区域窗口最右侧的selectbutton。 出现一个对话框。
    • 导航到要将文件移动到的文件夹。 如果需要,创build一个新文件夹 。 单击对话框右下angular的selectbutton,然后closures组信息/文件信息窗口。
    • 组中文件/文件的名称将变成红色,表示Xcode在您指定的位置找不到它们。
  2. 移动实际的文件

    • 在Finder(或Git)中将您在步骤1中select的文件移动到您想要的文件夹中。
    • 切换回Xcode。 文件/组应该都已经变黑了。 如果还有红色,那么你错过了将东西移动到正确的文件夹。

提示

在调整这个项目的〜300个文件时,我学到了一些重要的东西:

  • 有些文件拒绝这种方式; 也就是说,当您导航到新目标时, “select”button将被禁用,“ 新build文件夹”button也将被禁用。 虽然我不知道为什么它有所不同,但是我不知道为什么它有所作为的解决scheme是首先使用Xcode将这些文件放在一个组中(右键/控制单击这些文件并select“ 组” ,然后给组命名),然后移动组到新的位置。 在实际移动Finder中的文件之后,可以将其从组中删除(将其拖到新的父组/文件夹中并删除组)。
  • 完成步骤2后,每隔几分钟停止并build立一些文件。 这个版本会告诉你,到目前为止你是否搞错了什么东西,这样在你造成太多的损失之前,就可以更容易地修复它。
  • 如果这些文件不会移动到你想要的位置 – 我有一段时间移动一些在Classes文件夹中早期创build的文件 – 你可以简单地将它们拖出取景器的旧位置像桌面一样方便的地方,在Xcode中删除对它们的引用,然后通过右键/按住Control键点击Add Existing Files选项重新导入它们。
  • 如果过去你已经使用Xcode来删除对文件的引用,而没有将它们移动到这个项目中的垃圾,你会发现不必移动的文件,只是坐在那里。 小心你不要做我所做的事情,混淆我正在移动的当前一组文件的名称和较旧的,不再链接的文件,坚持要Xcode导入它们,因为你认为它是密集的。

希望这有助于未来的人。 我很惊讶,这是困难的,偶尔也是棘手的。

在Xcode 5或Xcode 6中:

  1. 创build映射到Finder中的组的文件夹
  2. 将文件移到Finder中的文件夹中
  3. select左侧Xcode侧边栏中的每个红色文件
  4. 单击“显示/隐藏实用程序”button以​​显示右侧边栏(请参见图)
  5. 在“身份和types”中,单击微小的button并select文件位置(参见图)

在这里输入图像说明

干杯。

我发现解决XCode令人震惊的devise最可靠的方法是在Finder中组织所有文件,原因有二:

  1. 与XCode的GUI不同,Finder不会产生“错误”
  2. 一旦在Finder中组织了一些东西,就可以将整个Finder文件夹拖放到XCode中,而且它可以完全按照您的要求进行操作

即使移动现有的XCode文件,执行此操作也会更快:

  1. 在Finder中select文件
  2. 在Finder中为他们创build一个文件夹
  3. 将它们拖放到文件夹(自动移动它们)
  4. 将Finder文件夹拖放到Xcode中(自动:创buildXcode文件夹,在Finder文件夹中添加每个文件)
  5. cmd – select你现在在Xcode中看到的每一个“红色”文件(因为你移动了它们)并点击删除键

NB:我从来没有使用“创build带有子组的拖动文件夹”选项,因为在XCode 3中,这往往是绝望的错误,可能会破坏项目。 苹果显然(恕我直言)不使用这个function在内部,否则它将永远不会被允许如此多车; 如果苹果不使用某种东西,那么使用它通常是不安全的 – 它们不擅长testing:)

有一个简单的设置和使用命令行工具 – “synx”在github中可用,完成这里所需要的。

它重新组织查找器中的Xcode项目文件夹以匹配项目中的Xcode组。

你可以在这里find它: https : //github.com/venmo/synx

更新: XCode 9默认支持这个function。 所以,不再需要使用其他工具!

Xcode 9

看来Xcode 9现在默认支持它。 将文件从一个组移动到另一个时,该文件也将从旧文件夹移动到新文件夹。 这是在WWDC 2017年宣布的。

我用下面的工具来实现它。 在组Xcode中组织文件夹

 --no-default-exclusions 

我通常会直接在Finder中将文件移动到目录中,然后在“Get Info”对话框中用XCode中的红色名称修复文件:单击“Choose …”button并select文件的新位置。 这是我想要在XCode中移动文件的第一个响应,并且可以正常工作。

在Xcode 4.5中,拖动文件夹结构时,会自动将其转换为项目导航器中的嵌套组。 然后,如果你看磁盘(例如右键单击并select在Finder中显示),文件夹结构已被保留。

我发现试图修复一个较旧的项目只是一个痛苦。 事实certificate,只要删除这些文件并再次将其拖入即可。

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

  1. 从xcode中删除文件/组,然后select“删除参考”。
  2. 进入查找器并根据需要移动文件夹/文件。
  3. 一旦完成,我回到Xcode并select文件 – >添加文件到{ProjectName}。
  4. 确保“将项目复制到目标组的文件夹(如果需要)”被选中
  5. 确保选中“为任何添加的文件夹创build组”
  6. 确保为项目选中“添加到目标”

最简单的XCode 8技术….

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

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

完成。