Xcode项目资源组织和结构

Xcode项目资源组织和结构,xcode,resources,interface-builder,Xcode,Resources,Interface Builder,我对Xcode比较陌生,有一件事困扰着我,当我添加一个资源时,它会被添加到我的项目目录的顶层目录中。例如,目前,我所有的图片都在顶层目录中,这让事情看起来很混乱。例如,我更希望有一个images/文件夹,然后在其中的子文件夹中存储某些东西的图像,比如选项卡栏/图标。这可能吗?还是将所有内容都保存在顶级目录中是一种惯例 freenode的#iphonedev频道有人告诉我一些关于构建过程规则的事情,这似乎太复杂了,我想我不应该麻烦了,考虑到解决方案的复杂性,大多数人只是把东西放在根目录中。也许事情

我对Xcode比较陌生,有一件事困扰着我,当我添加一个资源时,它会被添加到我的项目目录的顶层目录中。例如,目前,我所有的图片都在顶层目录中,这让事情看起来很混乱。例如,我更希望有一个images/文件夹,然后在其中的子文件夹中存储某些东西的图像,比如选项卡栏/图标。这可能吗?还是将所有内容都保存在顶级目录中是一种惯例

freenode的
#iphonedev
频道有人告诉我一些关于构建过程规则的事情,这似乎太复杂了,我想我不应该麻烦了,考虑到解决方案的复杂性,大多数人只是把东西放在根目录中。也许事情并没有那么复杂,我只是觉得应该更简单

例如,我还希望为我的视图设置一个子文件夹,如视图/,用于存储我的所有nib文件;目前它们都在顶级目录中。我的财产清单也是如此

如果您能告诉我惯例是什么,我将不胜感激,我怀疑它只是将所有内容存储在顶级目录中。我指的是实际的文件系统,而不是简单地在Xcode中创建“虚拟文件夹”来组织事情,因为我的项目的顶级目录仍然是一团糟。如果有可能把事情安排得更好,我将非常感谢任何关于如何完成它的详细帮助


我想我听说在最后的构建中,整个文件结构被压缩到根目录中。我不太介意,我只是想在我做项目的时候把事情组织起来。我想这就是“构建规则”的意义所在,但我不知道该怎么做或怎么做。

从你现在的位置到你想要的位置其实很容易。创建
images/
文件夹并将所有图像放入其中。现在,在Xcode的项目窗口中,图像文件已变为红色,因为它们已不在原来的位置。获取他们的信息,然后“选择…”新位置


请注意,仅因为您已在源文件系统(称为
$SRCROOT
)中移动了该文件,所以该文件在产品中的使用方式没有改变。如果在移动文件之前将其复制到
Contents/Resources/
中,则之后会将其复制到该位置。不会在目标位置添加任何子文件夹。

IDE的日子很难过。它们必须在文件系统世界(编译器及其源文件所在)和UI世界(程序员工作所在)之间进行协调

在形成当代编码文化的旧时代,每个人,包括编译器和人,过去都生活在文件系统中。所以今天我们仍然倾向于认为我们想要控制源和资源在磁盘上的位置。这很好,因为我们可能需要确切地知道编译器吃什么

无论如何,如果你认为你的IDE只是一个有趣的源代码数据库系统的前端,如果你真的对它的功能和特性充满信心(这种情况很少发生),那么你可能会得出结论,如果你不关心文件系统,作为一个程序员(以及作为一个人),你可能会有更好的生活

你想得没错,因为Xcode在文件系统代码组织方面不太好,也不友好,而且(正确地)挑剔的人将学习如何将文件移动到磁盘上正确的文件夹和正确的Xcode组中。如果使用“为任何添加的文件夹创建文件夹引用”,则具有1:1关系

但是你会看到很多人,以及来自Apple itsef的许多项目示例,他们使用一个简单的平面文件系统树,将所有内容都放在同一个文件夹中


我的建议是,您至少可以将公共标题和资源分组到不同的文件夹中,类似于Java/Maven,但没有通用的约定。

下面是对Graham建议的更多解释:

  • 创建一个图像目录
  • 在Xcode中创建图像组
  • 右键单击该组并获取信息
  • “选择…”将组的目录设置为您的图像目录
现在,您在images组中输入的任何内容都将自动进入images目录。如果您从Xcode、其他项目或Finder中拖放,或者添加新的。。。通过右键单击图像目录。(假设您在信息窗格中保留默认设置“相对于组”。)

这将适用于您放入该组的任何内容(NIB等)

对于
imageNamed:
,只需给出基本名称

我的建议是保留少量的文件系统目录,并且主要使用Xcode中的组进行组织。但我同意,少量文件系统目录非常有用。我把我所有的源代码放在一个Classes目录中(仅仅因为苹果使用了这个名称;我会选择“Sources”之类的东西)。我在顶层还有一个资源目录,通常在该目录下创建图像和音频目录。但除此之外,我一般不会创建很多真正的目录。这会使事情变得更整洁,但会使使用shell进行grep和通配符变得更容易


除了shell工具之外,按组而不是目录组织的最大优势是对subversion等版本控制系统的影响。当您突然意识到您的“视图”组太大时,您可以重新组织它,而不必考虑移动文件的巨大影响。

在Xcode 4.3.2中,接受的答案对我不起作用。看起来他们删除了“获取信息”菜单选项。相反,我这样做了:

  • 在磁盘上创建了我想要的目录

  • 转到“文件”菜单

  • 右击