有人知道如何将AppDelegate移动到子文件夹吗?我需要修改哪个模板?
提前感谢!
Chris
我刚刚成功地按照预期移动了所有文件。
重要的是确保您编辑了层次结构中的所有文件,以确保Definitions
部分中的每个键以及Nodes
部分中的每个项目都被更改以反映相同的文件夹结构。
更新:
大多数模板都包含像这样的键值对:
<key>Ancestors</key>
<array>
<string>com.apple.dt.unit.applicationBase</string>
<string>com.apple.dt.unit.osxBase</string>
</array>`
applicationBase
和osxBase
,并且如果适用,还要编辑这些模板中列出的所有祖先。Xcode 14.3
这是关于Xcode 14.3的更新。我将展示如何将四个标准的Swift文件放入一个子文件夹(Supporting Files)中,并在Xcode的项目导航器中更改文件的顺序。
这是标准的Xcode文件组织方式和我正在创建的方式。
首先,这是标准iOS应用程序模板的顶层层次结构,显示了模板的继承关系以及哪些模板处理哪些文件。这些文件要么在模板内部构建(B),要么作为整个文件夹中的一部分包含在模板中(I)。有些文件跨越多个模板进行构建。 模板A通过将模板B列为祖先来继承模板B。请注意,在.sceneLifecycleApplication和.application.SwiftUI.iOS中,.cocoaTouchApplicationBase都被列为祖先。树结构还可以更深入,但这个层级已足够满足我们的需求。/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application
com.stern.xyz
替换了原始模板中的com.apple.dt.unit.xyz
。您可以使用任何您想要的内容,只要它是唯一的。
- 更改模板的祖先,指向您修改后的模板。
- 进行更改以将文件放入“Supporting Files”文件夹中。这涉及在节点和文件的定义中在文件名前面添加“Supporting Files/”,并在文件的定义中添加一个值为“Supporting Files”的组。
- 分配一个排序顺序,以指定它们在Xcode的项目导航器中出现的顺序。较低编号的文件出现在较高编号的文件之上。以下是将AppDelegate、SceneDelegate、Assets和LaunchScreen移动到名为“Supporting Files”的子文件夹中,并将Main.storyboard移到Xcode项目导航器中的ViewController和Info.plist之上的步骤。
在以下路径中创建一个名为Templates的新文件夹:/Users/<username>/Library/Developer/Xcode
在Templates文件夹中创建一个名为Application的子文件夹,如果您希望您的新模板出现在New Project窗口的现有Application部分中。如果您给它一个不同的名称,将会在New Project窗口中出现一个具有该名称的新部分。
将这五个模板文件夹复制到您的Application文件夹中
MyApp.xctemplate
UIScene生命周期.xctemplate
Cocoa Touch App Base.xctemplate
Core Data Cocoa Touch App.xctemplate
IOS SwiftUI App.xctemplate
可能看起来没有必要包含iOS SwiftUI App.xctemplate,因为它不处理任何标准的Swift文件。然而,它必须被修改,因为它提供了一个替代路径到com.apple.dt.unit.cocoaTouchApplicationBase。如果Xcode找到模板的原始版本,它将在项目的顶级文件夹中创建第二个AppDelegate.swift文件。
最后的想法
我能够通过在MyApp.xctemplate中设置其SortOrder来改变Info.plist的位置,但这导致一个不完整的Info.plist文件被添加到项目中,所以我删除了该条目。
尽管它是针对Xcode 4编写的,但这个链接中的文档仍然非常有用,可以帮助理解模板:Xcode 4 Template Docs。