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

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

但是,Xcode 似乎并不关心文件(例如 Objective-C .h/.m 文件)在文件系统中的位置,以及每次添加组时(Option+Command+N) 这纯粹是装饰性的,因为您放入其中的任何文件都将与其他文件在硬盘驱动器上共享相同的位置。

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

感觉好像某个设置可以修复,但我找不到!有没有更好的办法?

更新: 将文件夹拖到 Xcode 时,您会看到一个对话框窗口,您可以在其中选择“文件夹引用”。这看起来很有希望,但是我的 Xcode 4 不接受其中的文件作为类,并且一直告诉我它找不到任何文件。也许答案就在这里,但我还是找不到。

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

最佳答案

更新

下面介绍 Xcode 9 及更高版本。

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

当您在项目导航器中右键单击(或按住 Control 单击)时,上下文菜单将包含“新建组”菜单项和任一“带文件夹的新建组”菜单项 或“没有文件夹的新组”菜单项。

  • 如果 Xcode 提供“New Group”和“New Group with Folder”,那么“New Group”会创建一个没有文件夹的组。

  • 如果 Xcode 提供“New Group”和“New Group without Folder”,那么“New Group”会创建一个带有文件夹的组。

换句话说,在文件夹创建方面,“新组”总是与其他(显式)菜单项相反。

如果您重命名一个组,并且该组具有相应的同名文件夹,Xcode 9 也会重命名该文件夹。

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

如果您希望在 Xcode 9 中出现这种行为,您可以从命令行设置一个未记录的设置:

defaults write com.apple.dt.Xcode IDEDisableStructureEditingCoordinator -bool YES

无法推断出有关“带文件夹的新组”和“不带文件夹的新组”的详细信息

Xcode 如何决定是显示“New Group”和“New Group with Folder”,还是“New Group”和“New Group without Folder”,这一点并不明显。 WWDC 2018 的一位 Apple 工程师(我想他的名字叫 Paul)看了 Xcode 源代码并给我解释:

  • Xcode 会计算出您单击了哪个组(或者,如果您没有单击某个组,它会计算出哪个组包含您单击的项目)。
  • Xcode 会查看作为单击组子级的 子组(和链接的文件夹)。
  • 如果大多数子组都有自己的文件夹,那么 Xcode 假定您希望新组也有自己的文件夹。所以 Xcode 显示“New Group”(将创建一个文件夹)和“New Group without Folder”。
  • 如果大多数子组没有有自己的文件夹,那么 Xcode 假定您希望新组也没有有自己的文件夹。所以 Xcode 会显示“New Group”(它不会创建文件夹)和“New Group with Folder”。
  • 如果恰好有一半的子组有自己的文件夹,我不知道 Xcode 是如何打破平局的,而且我现在不想测试它……
  • 如果点击的组没有子组,Xcode 会根据点击的组本身是否有自己的文件夹来决定显示什么。

基本上,Xcode 会尝试根据其 future 的 sibling 是否有自己的文件夹来猜测您的新组是否应该有自己的文件夹。

原创

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

不要选择“新建组”,而是选择“将文件添加到“”。然后,在文件选择器对话框中,单击新建文件夹按钮或按 Command-Shift-N 并键入新文件夹/组的名称。然后,确保选中“为任何添加的文件夹创建组”,然后单击“添加”或按 Return。

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

但如果您要创建一个新组来保存新文件,它确实会节省一些步骤。

https://stackoverflow.com/questions/6402661/

相关文章:

objective-c - 将参数传递给由 NSTimer 调用的方法

objective-c - objective-c : convert a NSMutableStr

iphone - NSNumber 和 NSInteger 有什么区别?

c++ - 我可以在同一个 Xcode 项目中拥有 Swift、Objective-C、C 和 C+

objective-c - 将自定义 subview (在 xib 中创建)添加到 View Con

ios - '无效更新 : invalid number of rows in section 0

ios - MKMapView:自定义 View 代替 Annotation Pin

ios - 按字典中键的值对字典的 NSArray 进行排序

iPhone - dequeueReusableCellWithIdentifier 用法

objective-c - 具有多个目标的 Objective C 到 Swift 头文件