如何让Xcode在磁盘上的文件夹结构中复制项目组结构?

如何让Xcode在磁盘上的文件夹结构中复制项目组结构?,xcode,configuration,Xcode,Configuration,我有一个具有以下组结构的Xcode项目: ProjectName/ Classes/ class1.h class1.m class2.h class2.m ... XMLDocs/ doc1.xml doc2.xml ... Resources/ Info.plist MainMenu.xib .

我有一个具有以下组结构的Xcode项目:

ProjectName/
    Classes/
        class1.h
        class1.m
        class2.h
        class2.m
        ...
    XMLDocs/
        doc1.xml
        doc2.xml
        ...
    Resources/
        Info.plist
        MainMenu.xib
        ...
等等等等

我也希望在磁盘上的文件夹结构中表示:

ProjectFolder/
    Project.xcodeproj
    Classes/
        class1.h
        class1.m
        class2.h
        class2.m
        ...
    XMLDocs/
        doc1.xml
        doc2.xml
        ...
    Resources/
        Info.plist
        MainMenu.xib
        ...
与通常的根项目文件夹方法中的所有内容不同

有没有办法做到这一点,而不必在磁盘上手动创建文件夹结构,然后将Xcode中的所有引用重新指向新位置


当我在Xcode中创建新组或向现有组添加文件时,如果您能告诉我如何自动执行此操作,则可获得额外积分。

您需要的是文件夹引用。将文件拖动或添加到项目时,可以选择“为任何添加的文件夹创建文件夹引用”。选择它,你就会得到你想要的行为

您可以尝试将项目的整个封闭文件夹添加为文件夹引用。这应该会得到一切。或者分别添加对“类”、“资源”和“XML”的引用

Xcode中没有“使我的磁盘看起来像我的项目结构”功能

不过,您可以使用AppleScript自动化任务:您可以从脚本中检查和更改项目结构。因此,您只需编写一个脚本,在项目结构上进行迭代,并使文件夹层次结构看起来与项目结构相同,同时调整Xcode的文件和组引用指向的位置。

您可以在一定程度上做到这一点!每次创建一个新组时,只需多做一步(这是你第一次有很多事情要做!):

无论何时在Xcode中创建组,都要立即选择它并打开右侧的侧栏。请注意其名称下方的“位置:”设置。单击“无”旁边的文件夹图标,并将其设置为具有相同名称的新文件夹

现在,每当您向组中添加文件时,它们都会指向磁盘上相应的文件夹。呜


不幸的是,这一次,您将有很多文件移动要做。(当您更改组路径时,您的文件将全部变为红色,因为Xcode将开始在新文件夹中查找这些文件。您必须手动将它们从查找器中移动以进行修复。)但是,有一个命令行工具可以为您执行此初始迁移:

Xcode 9解决了此问题。默认情况下,将创建一个新组,并在磁盘上创建相应的文件夹。

我发现,如果在Xcode中移动文件,同时按[CMD],则文件夹结构将与Xcode结构匹配

谢谢,这有助于添加将来的项目,但是有没有办法将现有组转换为文件夹?只有在拖动文件时才有此选项,而在添加新文件时没有此选项这是添加资源的一个很好的解决方案。您可能已经注意到PhoneGap中的蓝色文件夹“www”。只需将任何内容添加到该文件夹,它就会添加到您的项目中。但是,如果您转到项目的“构建阶段”部分中的“复制捆绑资源”,您会注意到只有文件夹出现在那里,而没有其内容。要访问引用文件夹的内容,您需要将路径附加到所需资源,并使用添加文件夹的名称,如:NSURL*htmlur=[[NSBundle mainBundle]URLForResource:@“mypage”,扩展名为:@“html”子目录:@“www”];我想这么做已经很久了。只是另一件Xcode似乎无法处理的简单事情。至少我现在知道这个功能并不存在。谢谢你的提问!我最近发现了一个命令行工具,可以组织文件夹结构。它的设置和使用都很简单。有关更多详细信息,请查看。实际上,有一种方法-获取信息已在xcode 4上移动(如上所述)-尝试查找以下位置:(我已经试过了,但无法在Xcode4中复制。你也有xc4的解决方案吗?哦,天哪。他们不可能让这个问题变得更神秘。谢谢你的回答。有没有办法自动化这个过程?也许是插件什么的?一个完美的答案,你救了我一天,非常感谢。我认为这个答案应该被标记为正确答案。可以吗你写的脚本的例子?不是我可以分享的,对不起。