将Xcode组创建为文件系统文件夹的工作流程

epo*_*gee 62 xcode file-organization objective-c xcode4

我喜欢在Xcode 4项目导航器窗格中将我的类组织成组.我也通过终端使用GIT版本,这对我来说比Xcode 4集成更好.对我来说,当我在Xcode中创建的组对应于我的文件系统上的真实文件夹时,它是最有意义的.

但是,Xcode似乎并不关心文件系统中的文件(例如Objective-C .h/.m文件)的位置,每次添加一个group(Option+Command+N)时,它都是纯粹的装饰,因为你放在那里的任何文件都会分享与其余硬盘相同的位置.

奇怪的是,如果您首先在硬盘驱动器上创建一个文件夹,然后将其拖到Xcode,那么您已经在文件系统上创建了一个具有自己位置的组.您在其中创建的每个文件都将在磁盘上的文件夹中创建.我喜欢这个,但如果Xcode会为我做这件事,我会更喜欢它Option+Command+N.为您要创建的每个组切换到Finder的工作流程,然后将其拖回到项目导航器中的正确位置,这简直太愚蠢了.

感觉就像设置会修复,但我找不到它!有没有更好的办法?

更新:将文件夹拖动到Xcode时,您将看到一个对话窗口,您可以在其中选择"文件夹参考".这看起来很有希望,但是我的Xcode 4不接受那里的文件作为类,并一直告诉我它找不到任何文件.也许答案就在这里,但我仍然找不到它.

另一个更新:我已将主编辑器环境从Xcode更改为AppCode.后者支持实际创建文件夹以支持项目组,同时保持与Xcode的100%兼容性.那些AppCode的人肯定知道他们在做什么.

rob*_*off 126

UPDATE

以下描述Xcode 9及更高版本.

从Xcode 9开始,当您在项目中创建组时,Xcode可以自动创建文件系统文件夹.

当你右击(或控制单击)在项目导航,上下文菜单将包括"新建组"菜单项,无论是 "新的集团文件夹"菜单项 "新组没有文件夹"菜单项.

  • 如果Xcode提供"New Group"和"New Group with Folder",则"New Group"会创建一个没有文件夹的组.

  • 如果Xcode提供"新组"和"没有文件夹的新组",则"新组"将创建一个包含文件夹的组.

换句话说,关于文件夹创建,"新组"总是与另一个(显式)菜单项相反.

如果重命名组,并且该组具有相同名称的相应文件夹,Xcode 9也会重命名该文件夹.

在Xcode 9中,如果将文件从一个组拖到另一个组,并且这些组具有不同的文件夹,则Xcode 9会将文件移动到新组的文件夹,而不管新组的文件夹是否与该组具有相同的名称.

如果你希望在Xcode 9这种行为,您可以设置在命令行中一个未公开的设置:

defaults write com.apple.dt.Xcode IDEDisableStructureEditingCoordinator -bool YES
Run Code Online (Sandbox Code Playgroud)

无法推断出"带文件夹的新组"和"没有文件夹的新组"的详细信息

Xcode决定是否显示"New Group"和"New Group with Folder",或"New Group"和"New Group without Folder"并不是很明显.2018年WWDC上的Apple工程师(我认为他的名字是Paul)查看了Xcode源代码并向我解释:

  • Xcode确定您点击了哪个组(或者,如果您没有单击某个组,它会确定哪个组包含您单击的项目).
  • Xcode查看作为被点击组的子组的子组(和链接文件夹).
  • 如果大多数子组都有自己的文件夹,那么Xcode假定您希望新组也有自己的文件夹.所以Xcode显示"New Group"(将创建一个文件夹)和"New Group without Folder".
  • 如果大多数子组没有自己的文件夹,则Xcode假定您希望新组也没有自己的文件夹.所以Xcode显示"New Group"(不会创建文件夹)和"New Group with Folder".
  • 如果正好有一半的子组有自己的文件夹,我不知道Xcode如何打破领带,我现在不想测试它...
  • 如果单击的组没有子组,Xcode将根据被点击的组本身是否有自己的文件夹来决定显示的内容.

基本上,Xcode会根据其未来的兄弟姐妹是否拥有自己的文件夹来尝试猜测您的新组是否应该拥有自己的文件夹.

原版的

可以直接在Xcode中创建一个带有自己文件夹的新组,但这一点并不明显.

不要选择"新组",而是选择"将文件添加到"<项目>"'.然后,在文件选择器对话框中,单击"新建文件夹"按钮或按Command-Shift-N并键入新文件夹/组的名称.然后,确保选中"为任何添加的文件夹创建组",然后单击"添加"或按"返回".

添加具有自己的文件夹的组

如果您需要将现有文件移动到新组中,这不会为您节省太多,因为Xcode仍然不会这样做.

但是如果要创建一个新组来保存新文件,它确实可以节省一些步骤.

  • 我使用ScreenFlow录制屏幕,使用PhotoShop将电影转换为GIF.但是,如果我现在这样做,我会先查看[LICEcap](http://www.cockos.com/licecap/).它是免费的,它将屏幕直接记录到GIF. (5认同)

E-R*_*die 37

对于那些懒得同步文件夹的人来说,GitHub上有一个很好的工具.

Synx是一个命令行工具,可重新组织您的Xcode项目文件夹以匹配您的Xcode组.

在此输入图像描述

希望这有助于某人

  • 我喜欢这个,但它必须存在是一种耻辱. (15认同)

Nat*_*chs 5

这里看看andyvn22的答案

换句话说:

  • Xcode 3:每当你在Xcode中创建一个组时,立即获取它的信息,并注意其名称下方的"Path:"设置.单击"选择..."并将其设置为具有相同名称的新文件夹.
  • Xcode 4:每当你在Xcode中创建一个组时,立即选择它并打开右侧边栏.请注意其名称下方的"路径:"设置.单击"无"旁边的图标(这是什么,窗口中的文件?)并将其设置为具有相同名称的新文件夹.

然后,您需要手动将磁盘上的任何现有文件移动到新文件夹.

刚刚在我的Xcode4项目中试过这个,就像一个魅力.