相比Visual Studio,使用Xcode很不习惯的一点就是它的Group层级是和Finder中的文件夹层级是不一致的。

这是因为在Xcode工程内,默认情况下新建文件夹(Group)的Location属性值是Relative To Group,也就是相对于父Group,而Xcode不会为新Group创建新的文件夹,所以如果不做任何处理,所有文件会都堆在根目录下。就像Xcode工程内的Supporting Files的Group,里面的文件也是在根目录的。如下图,每一个创建的Group在Xcode右侧File inspector中的Location下的文件夹都是空的(None):

为了使Xcode工程Group结构和文件系统结构一样,必须使每一个Group的Location下对应的文件夹就是Group名字本身。具体可以点击Location右下侧的文件夹图标:

 

然后在选择器中新建文件夹,然后输入Group的名字,创建并选择新文件夹后选确定。这样Group的Location就是自己了,代表有自己的文件夹。

 

不过这样只能解决在Xcode中创建Group时对应文件夹的问题,实际上为了整理工程内Group文件夹层级和Finder中显示的一样,总共有两个方面需要考虑,具体如下:

1. Xcode工程本身Group的改变,创建、删除、移动。
2. 从外部拖放文件夹到Xcode内。

 

实际上有一种更完美和全面的方法,那就是直接从Finder中拖放文件夹到Xcode中。使用默认配置就可以,也就是Copy items if needed和Create groups选项,如下图:

 

选择确定后,Xcode会把拖放的文件夹复制到工程内并且在工程内保持一样Group结构。所以上面的方面2没有问题,至于方面1,也就是处理“ Xcode工程本身Group的改变,创建、删除、移动”时,可以这样做:不要在Xcode中操作,直接在Finder中操作物理文件夹和文件位置,然后在Xcode中删除相应的文件或者文件夹引用,接着再次把文件夹拖放到Xcode内就OK了!注意删除Group要选择Remove Reference而不是Move to Trash,否则Group对应的文件夹就真的被删除了。