我正试图围绕Xcode的文件组织 - 或者缺乏。我可以在项目中做我想做的所有事情,它看起来很棒,所有的“假”文件夹和结构。我去看看文件系统和繁荣巨大的混乱。我已经尝试导入已选中Create Folder Reference for any added folder
选项的文件,并且有效。我在Xcode和文件系统中得到了我想要的结构。
问题:当我将文件添加到Xcode中作为文件夹参考的文件系统上的文件夹时,当我去看时,它不在Xcode中,甚至在重新加载项目之后。文件夹参考中的文件/子文件夹无法在Xcode中移动。当我在文件系统上移动它们时,我在Xcode中得到了红色链接(找不到文件?)。
如何保留有组织的项目和文件系统?如何设置项目以识别文件夹并在我的项目中显示其(当前和最新)文件和子文件夹?
我似乎遇到的另一个问题是,如果我使用文件夹参考并更改文件,我的应用程序中的文件不会更新,除非我执行完全清理&重建。如果我不使用文件夹参考,所有我的文件将被转储到应用程序包的Resource文件夹中,而不是我项目中的漂亮结构。
我应该关心吗?我应该只使用假文件夹,让一切都到处都不关心?我的应用程序包将是一团糟,文件系统将是一个烂摊子,但它将全部工作...我希望?
修改
我想要有组织的文件系统的最大原因是资源文件(图像,声音,其他数据文件等)不在Xcode中编辑。我必须通过文件系统在第三方应用程序中访问它们。如果它的混乱,在其他第三方应用程序中更难找到和维护。
如果我想要一个如下所示的结构会发生什么:
我应该使用长文件名而不是文件夹进行整理吗?
答案 0 :(得分:16)
我也希望Xcode自动保持自己和文件系统同步。
所以,我花了一个小时手动为一个名为acani-iphone on GitHub的项目做了这样的事情。基本上,我只是使用Finder移动了一些文件,创建了我喜欢的新文件夹。然后,我切换回Xcode,发现我刚刚移动的文件现在是红色的(因为Xcode认为它们是我移动它们的地方,因此无法找到它们。)
更新:我刚才发现我只能点击红色组或文件,按下CMD + i(从上下文菜单中获取信息,右键单击红色文件或组即可打开),在General选项卡下,单击Choose,然后找到我将文件移动到文件系统中的位置。但是,我没有这样做,这就是我所做的,而且也有效:
然后,我只是突出显示Xcode中的所有红色文件,并按command + delete
删除损坏的(红色)引用。然后,我右键单击我要添加文件的组(通常是同一组),然后单击Add
> Existing Files...
。然后,我在文件系统的新位置找到了相同的文件。我保持“将项目复制到目标组的文件夹(如果需要)”未选中,我选中了单选按钮“为任何添加的文件夹递归创建组”,如果我添加的文件用于构建,我选中了添加到目标acani acani iPhone应用程序。
我一次就像一个文件目录一样做了上面的事情。有几次我更积极,一次添加多个目录,因为我几乎总是选择单选按钮“为任何添加的文件夹递归创建组。”
我发现文件acani_Prefix.pch
和acani-Info.plist
必须保留在根文件系统目录中(尽管可能会设置设置以允许这些文件在其他地方,就像我认为你可以向acani-Info.plist
添加一行,以便您可以移动/重命名acani_Prefix.pch
,但我可以在文件系统的根目录中使用它们。
这很烦人,也许甚至不值得麻烦,也许甚至不值得拖延,但是在将现有文件添加到Xcode之前,我会首先确保它们位于我希望它们位于文件系统。
答案 1 :(得分:6)
好的,所以这是它的工作原理:
Xcode在您告诉它们之前不知道任何文件。也就是说,即使您在查找器中手动添加文件(通常是个坏主意)到包含Xcode项目中的文件的文件夹,在您“将现有文件添加到项目”之前,它也不会知道它们。
将现有文件(或文件组)添加到项目(例如,您刚刚下载的某些代码)的最佳实践(imo)是选择“添加现有文件”,然后“将项目复制到目标组的文件夹”(如果需要)“在下一个对话框中,如果你希望你的项目有一个有问题的文件的副本,而不仅仅是对它们的引用(两者都有优点和缺点)。
不要过于担心Xcode中的文件夹命名,或者放置内容的位置,但要尽量遵守在您的环境中有意义的标准。例如,我总是把我写的类放在“Classes”中,并且为我在项目中使用的任何库代码都有单独的文件夹。我总是把图像/图标/音频等放到“资源”中。
简而言之,如果您希望项目文件夹中的内容与项目中的内容大致相同,请始终通过选择“将项目复制到目标组的文件夹”来添加现有文件
XCode的灵活性是有意的。由你决定如何组织事物。
答案 2 :(得分:5)
我应该关心吗?我应该只使用假文件夹并让 一切都到处都不关心?我的应用程序包将是一个 一团糟,文件系统将是一团糟,但它会全部工作......我愿意 希望?
IMO没有...... :)基本上。重点是XCode旨在为您提供最佳的编程体验。如果Apple希望您在实际文件系统中物理组织所有文件和文件夹,那么他们就会这样做。
我真的不明白为什么你想以这种方式组织所有文件和文件夹?它对应用程序的运行没有任何影响,XCode中的“假”文件夹(组)为您自己(和其他人)提供必要的视觉帮助,以便在您的类和其他资源中导航。在您的文件系统中正确组织它(正如您所发现的)肯定会让事情变得更加困难吗?
答案 3 :(得分:2)
使用Synx。
它会重新排列磁盘上的文件以匹配您的Xcode组。我尝试在提交任何更改Xcode组的代码之前运行它,并使项目保持整洁。
答案 4 :(得分:1)
如果Xcode可以保持自身和文件系统同步,那将是很棒的。不幸的是它没有。想要它的一个原因是SCCS中的层次结构与Xcode中的层次结构匹配。
我回过头来保持Xcode中的组织,并将文件系统分开,而不是“Classes”和“Resources”。
答案 5 :(得分:0)
我所做的是创建一个组来表示每个文件夹,然后在向其添加文件之前,在右侧面板的第一个选项卡中,紧靠“Path”下方,有一个图标允许您选择文件夹。在该文件夹对话框中,我创建了一个与该组匹配的文件夹并选择它。
在xcode3中,这导致从此路径开始的新文件和添加文件对话框。这使得它值得付出努力。但是,Xcode4不尊重此设置。因此,它是否有任何实际价值值得怀疑。我也希望XCOde支持更好的文件系统组织。
考虑到文件名在项目中必须是唯一的,无论组和文件夹如何,都有理由接受平面文件夹结构默认值并使用组以方便IDE。很难从其他不受欢迎的平台中找到它。
答案 6 :(得分:0)
我觉得你和个人不能关心实际的结构而只是依赖于工作空间。
真正伟大的是一个工具,它将覆盖工作区结构并相应地重新组织文件系统,负责任何文件夹的重新命名等。这将是一个经典的解决方案,恕我直言应该实现为我们在移动时重新组织项目的选项。
虽然xcode4可以同时使用git和SVN,但有些问题可能是源代码控制。
答案 7 :(得分:0)
这改变了Xcode 9.来自release notes:
项目导航器中的组现在与之关联得更紧密 文件系统中的目录。 (28612132)
- 在Project Navigator中的组之间拖动文件会移动文件系统中的文件并更新任何关联的SCM工作副本。
- 当一个组连接到文件系统中的文件夹时,创建,重命名和删除组会更新相应的文件和 文件系统中的文件夹。
- 要删除文件系统中组和文件夹之间的连接,请选择该组,然后打开“文件”检查器, 单击清除路径按钮(X)上的。
- 要将文件系统中的文件或文件夹中的关联添加或更新为项目中的文件或组,请选择该文件或 组,打开文件检查器,然后拖动相应的文件或 文件夹到文件检查器中的“位置”部分。
新行为可从“带有文件夹的新组”命令(可能看起来只是“新组”)中获得,而旧行为可从“没有文件夹的新组”获得命令(也可能只显示为“新组”!)目标文件夹中任何现有组之间的主要用法似乎确定哪个命令被标记为“新组”。这有点令人困惑,但如果你习惯选择其中一个,那么这个想法似乎就是你可以坚持使用默认的“新组”命令。 (见rob mayoff's far more thorough explanation.)