【问题标题】:Moving Files into a Real Folder in Xcode在 Xcode 中将文件移动到真实文件夹中
【发布时间】:2011-05-23 18:52:11
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: xcode macos ios directory


    【解决方案1】:

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

    【讨论】:

    • 又是组群!
    【解决方案2】:

    有一个简单的设置和使用命令行工具 - “synx” 可以在 github 上找到,这正是这里所需要的。

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

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

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

    【讨论】:

    • 很棒的工具,但在大型项目中变得非常缓慢(可能需要几分钟才能完成工作)并且似乎不再受支持。
    【解决方案3】:

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

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

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

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

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

    奖励积分!

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

    【讨论】:

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

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

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

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

    完成。

    【讨论】:

      【解决方案5】:

      Xcode 9

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

      【讨论】:

        【解决方案6】:

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

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


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

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

        过程

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

        1. 告诉 Xcode 你希望文件在哪里

          • 右键/Control 并单击要移动的文件或文件组,然后从出现的上下文菜单中选择 Get Info组信息文件信息窗口出现。

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

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

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

        2. 移动实际文件

          • 在 Finder(或 Git)中,将您在第 1 步中选择的文件移动到您希望它们所在的实际文件夹中。

          • 切换回 Xcode。文件/组应该都变黑了。如果有任何仍然是红色的,那么您错过了将某些内容移动到正确的文件夹。

        提示

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

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

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

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

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

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

        【讨论】:

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

        在 Xcode 5 或 Xcode 6 中:

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

        干杯。

        【讨论】:

        • 一些用户请注意,如果您在预编译标头信息后收到更改的错误消息,只需对产品进行清理,一切都会好起来的!
        • 我在 Xcode 5.1.1 中按照这种方法将头文件移动到物理文件夹中。我可以移动文件。但是 Xcode 在构建项目时说“找不到文件”。你能帮忙吗?
        【解决方案8】:

        我用下面的工具来实现的Organize Folders in Groups Xcode

        --no-default-exclusions
        

        【讨论】:

          【解决方案9】:

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

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

          【讨论】:

            【解决方案10】:

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

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

            【讨论】:

              【解决方案11】:

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

              1. Finder 不会犯“错误”,这与 XCode 的 GUI 不同
              2. 在 Finder 中组织好所有内容后,您可以将整个 Finder 文件夹拖放到 XCode 中,然后...它完全按照您的意愿行事,毫不费力

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

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

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

              【讨论】:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2019-01-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多