ChatGPT解决这个技术问题 Extra ChatGPT

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

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

然而,现在项目即将被共享以进行版本控制,项目文件夹本身对于那些试图通过终端扫描它的人来说是一场恐怖表演,大约有 300 个文件,其中一半以上是图形。

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

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

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


b
brandonscript

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

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

在 Xcode 文件夹树中创建新组,并根据需要将文件组织到其中。在 Finder 中创建一个匹配的物理文件夹树并将您的物理文件组织到其中以匹配您在步骤 1 中所做的操作。Xcode 中的所有引用现在应该是红色的(没关系!)。从身份和类型管理器中,选择 Xcode 中要重新定位的组,然后单击信息窗格中的文件夹图标: 在 Finder 选择对话框中,找到您在步骤 2 中为此组创建的等效新文件夹。现在将自动重新发现该组内的文件!

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

奖励积分!

假设您不小心搞砸了移动,现在您的一堆文件是红色的并且无法找到:选择多个损坏的文件,并使用步骤 4 的屏幕截图中的相同文件夹图标,找到包含这些文件的正确文件夹文件,它们会自动解决丢失的路径。


但是,这样做会使文件在 Git 中无法跟踪。当然,我总是可以读取文件,但我错过了什么吗?
@jeraldo 不确定您使用的是什么风格的 git,但我从来没有遇到过这个问题。但是,您可以轻松地执行 git add .
我错过了一些东西,我不确定它是什么。也许我不理解步骤(1)中“将文件组织成它们......”这些词的含义?我认为这意味着“通过拖放或其他方式将文件添加到组中”。但是如果我这样做,那么 Xcode 当然会识别文件并且不会将它们显示为红色,如步骤 (3) 中所述。知道我做错了什么吗?
您是否按照步骤 2 移动了物理文件?
啊,我想通了!步骤(2)对我来说有点太神秘了。如果我要重写它,我会说“创建一个匹配的物理文件夹树,然后使用 Xcode 的 Show in Finder 命令来定位您在步骤 (1) 中添加到新组的文件并物理移动这些文件进入你刚刚创建的文件夹。”类似的东西...
M
Matthew Frederick

2017 年 6 月进一步编辑: Xcode 9 会自动执行此操作,无需特别努力。此答案和 Brandon's 仅适用于 Xcode 8 及更早版本。

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

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

我从这里的一个问题 Xcode organising files and folders (core data model objects - iPhone) 中获得了基本信息,但在此过程中学到了重要的东西。

过程

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

告诉 Xcode 您希望文件在哪里:右键/Control 键单击您要移动的文件或文件组,然后从出现的上下文菜单中选择 Get Info。出现组信息或文件信息窗口。单击路径区域中窗口最右侧的选择按钮。出现一个对话框。导航到要将文件移动到的文件夹。如果需要,创建一个新文件夹。单击对话框右下角的选择按钮,然后关闭组信息/文件信息窗口。组中文件/文件的名称将变为红色,表示 Xcode 在您指定的位置找不到它们。移动实际文件 在 Finder(或 Git)中,将您在步骤 1 中选择的文件移动到您希望它们进入的实际文件夹中。切换回 Xcode。文件/组应该都变黑了。如果有任何仍然是红色的,那么您错过了将某些内容移动到正确的文件夹。

提示

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

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

在完成多个文件的第 2 步后,每隔几分钟停止并构建一次。该构建会告诉您到目前为止是否搞砸了任何事情,从而更容易在您造成太大损坏之前返回并修复它。

如果文件无法移动到您希望它们移动到的位置——我曾经很喜欢移动一些早期在 Classes 文件夹中创建的文件——你可以简单地将它们从查找器中的旧位置拖到像桌面这样方便的地方,在 Xcode 中删除对它们的引用,然后通过右键/控制单击添加现有文件选项重新导入它们。

如果过去您曾使用 Xcode 删除对文件的引用,而没有将它们移动到此项目中的垃圾箱,您会发现不必移动而只需放置在那里的文件。小心你不要做我做的事情,混淆我正在移动的当前文件组的名称和旧的、不再链接的文件,坚持让 Xcode 导入它们,因为你认为它很密集。

希望这对未来的人有所帮助。令我惊讶的是,它是如此困难,有时甚至很棘手。


将所有文件放在同一个目录中真的让我很烦。这次真是万分感谢!
您还可以:在Finder中随意重新排列目录结构,删除项目中的所有“红色文件”,然后使用“文件夹中的组”选项将它们全部添加回项目中
@bshirley 非常正确,如果主目录中的所有文件都需要在项目中,那么可以节省大量时间。不幸的是,对于涉及多人的项目或随着时间的推移有很多版本的项目,可能会有许多不应该添加到项目中的文件。在这种情况下,您必须跟踪删除了哪些内容才能恢复它们,或者类似的东西。
在 xcode 4 中,我必须做一些不同的事情 - 右键单击时没有看到任何上下文“获取信息”链接。相反,我必须显示身份和类型视图(可能是我不知道的名称)。它是 xcode4 标题栏中视图选项中最右侧的按钮。我首先在文件系统上移动文件,然后单击路径旁边的奇怪图标,并告诉 xcode 新文件在哪里。
移动文件的问题在于,当它已经在 SVN 控制下时,您需要确保使用诸如 Versions 或 Cornerstone 之类的应用程序来移动文件……否则您最终会遇到可怕的版本控制问题!我希望苹果能抛弃“组”的想法,把所有东西都放在真正的文件夹中,a-la Eclipse ......
r
reinaldoluckman

在 Xcode 5 或 Xcode 6 中:

在 Finder 中创建映射到您的组的文件夹 将文件移动到 Finder 中的这些文件夹中 选择左侧 Xcode 侧边栏中红色的每个文件 单击“显示/隐藏实用程序”按钮以显示右侧边栏(见图) “身份和类型”,点击小按钮并选择文件位置(见图)

https://i.stack.imgur.com/L5UPc.png

干杯。


一些用户请注意,如果您在预编译标头信息后收到更改的错误,只需对产品进行清理,事情就会解决!
我在 Xcode 5.1.1 中按照这种方法将头文件移动到物理文件夹中。我可以移动文件。但是 Xcode 在构建项目时说“找不到文件”。能否请你帮忙。
A
Adam

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

Finder 不会犯“错误”,不像 XCode 的 GUI 一旦在 Finder 中组织好东西,您可以将整个 Finder 文件夹拖放到 XCode 中,然后......它完全按照您的意愿行事,毫不费力

即使移动现有的 XCode 文件,这样做也更快:

在 Finder 中选择文件 在 Finder 中为它们创建一个文件夹 将它们拖放到文件夹中(自动移动它们) 将 Finder 文件夹拖放到 Xcode 中(自动:创建 Xcode 文件夹,在 Finder 文件夹中添加每个文件) cmd-选择您现在在 Xcode 中看到的每个“红色”文件(因为您移动了它们)并点击删除键

注意:我从不使用“创建带有子组的拖动文件夹”选项,因为在 XCode 3 中,这通常是无可救药的错误并且可能会损坏项目。 Apple 显然(恕我直言)不会在内部使用此功能,否则绝不会允许它出现如此多的错误;如果 Apple 不使用任何东西,那么使用它通常也不安全 - 他们不擅长测试 :)


我明天要试试这个..这是我一直在寻找的简单解决方案。为什么他们把事情搞得这么难?如果它只是镜像文件系统,那么它就不会那么混乱了。谢谢!
这是我尝试的第四个解决方案,也是我唯一可以使用 xcode 5.1.1 的解决方案。此外,由于某种原因,这不适用于我的任何类别。我不得不将它们从字面上移到垃圾箱,将它们从垃圾箱中取出,然后将它们重新添加到 xcode 中,最后它起作用了。
N
Nitesh Borad

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

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

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

更新:XCode 9 默认支持此功能。所以,不再需要使用其他工具了!


很棒的工具,但在大型项目中变得非常慢(可能需要几分钟才能完成工作)并且似乎不再受支持。
G
Guy Daher

Xcode 9

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


M
Mike.R

我使用以下工具来实现它。Organize Folders in Groups Xcode

--no-default-exclusions

X
Xie Yanbo

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


S
Snowcrash

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

我发现尝试从旧项目中修复问题只是一种痛苦。事实证明,删除这些文件并再次将它们拖进来要容易得多。


S
Shannon Cole

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

从 xcode 中删除文件/组并选择“删除参考”。进入查找器并根据需要移动文件夹/文件。完成后,我回到 Xcode 并选择 File->Add Files to {ProjectName}。确保选中“将项目复制到目标组的文件夹(如果需要)”确保选中“为任何添加的文件夹创建组”确保为您的项目选中“添加到目标”


s
software evolved

XCode 8 最简单的技术....

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

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

完毕。


J
Jad Chaar

在 XCode 11 上(我刚刚在 XCode 11.6 上验证了这一点),您可以在项目导航器下选择要移动的文件,右键单击所选文件,然后单击“New Group From Selection”。这将在磁盘上创建一个文件夹并适当地移动文件。


又是成群结队了!