XCode模板:移动AppDelegate

3
我目前正在制作一些XCode模板,以使我的工作更加轻松。我复制了原始模板并对其进行了修改以满足我的需求。到目前为止,一切都很顺利。然而,我找不到将生成的AppDelegate文件移动到子文件夹的方法,否则就会出现两个副本。
有人知道如何将AppDelegate移动到子文件夹吗?我需要修改哪个模板?
提前感谢!
Chris
2个回答

1

我刚刚成功地按照预期移动了所有文件。

重要的是确保您编辑了层次结构中的所有文件,以确保Definitions部分中的每个键以及Nodes部分中的每个项目都被更改以反映相同的文件夹结构。

更新:
大多数模板都包含像这样的键值对:

<key>Ancestors</key>
<array>
    <string>com.apple.dt.unit.applicationBase</string>
    <string>com.apple.dt.unit.osxBase</string>
</array>` 

在这种情况下,您需要编辑模板applicationBaseosxBase,并且如果适用,还要编辑这些模板中列出的所有祖先。

你能详细说明一下吗?我是基于苹果的SingleView模板进行开发的,所以我不能去修改它的祖先。 - damjandd
@user2973562:抱歉回答晚了。我编辑了我的答案以回答你的问题。 - cLar
正如我所说,我的模板继承了一些苹果的模板,因此为了更改它们,我必须实际上复制所有这些模板,进行更改,并使用这些副本作为祖先,以便不会破坏苹果的默认模板? - damjandd
没错。您可以通过右键单击程序文件夹中的Xcode.app文件并选择“显示包内容”来找到默认模板。这些模板存储在Contents/Developer/Library/Xcode/Templates中。 - cLar
我能够更改Appdelegate的组。我也想改变物理路径。我所做的是在模板目录中放置一个更完整的结构。并在“节点”部分中给出根文件夹的名称。现在文件夹结构正在创建,相应的组结构也正在创建。Appdelegate位于Classes/Appdelegate组中,但它实际上是在Xcode项目目录中创建的。 - Johnykutty

0

Xcode 14.3

这是关于Xcode 14.3的更新。我将展示如何将四个标准的Swift文件放入一个子文件夹(Supporting Files)中,并在Xcode的项目导航器中更改文件的顺序。

这是标准的Xcode文件组织方式和我正在创建的方式。

Xcode files in standard locations Xcode files in Support Files folder

首先,这是标准iOS应用程序模板的顶层层次结构,显示了模板的继承关系以及哪些模板处理哪些文件。这些文件要么在模板内部构建(B),要么作为整个文件夹中的一部分包含在模板中(I)。有些文件跨越多个模板进行构建。

Template hierarchy

模板A通过将模板B列为祖先来继承模板B。请注意,在.sceneLifecycleApplication和.application.SwiftUI.iOS中,.cocoaTouchApplicationBase都被列为祖先。树结构还可以更深入,但这个层级已足够满足我们的需求。
这五个列出的模板都在Xcode应用程序包的这个文件夹中。
/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的项目导航器中出现的顺序。较低编号的文件出现在较高编号的文件之上。
在每个模板文件夹中,都有一个名为TemplateInfo.plist的文件。更改将在这些文件中进行。双击TemplateInfo.plist以在Xcode中打开并进行编辑。
步骤:

以下是将AppDelegate、SceneDelegate、Assets和LaunchScreen移动到名为“Supporting Files”的子文件夹中,并将Main.storyboard移到Xcode项目导航器中的ViewController和Info.plist之上的步骤。

  1. 在以下路径中创建一个名为Templates的新文件夹:/Users/<username>/Library/Developer/Xcode

  2. 在Templates文件夹中创建一个名为Application的子文件夹,如果您希望您的新模板出现在New Project窗口的现有Application部分中。如果您给它一个不同的名称,将会在New Project窗口中出现一个具有该名称的新部分。

  3. 将这五个模板文件夹复制到您的Application文件夹中

Templates Folder

给App.xctemplate取一个新名字。我叫它MyApp.xctemplate。这个名字将会出现在新项目窗口中。

New Project Dialog

对五个TemplateInfo.plist文件进行如红框所示的更改。您可以使用自己的反向域名,而不是com.stern。

MyApp.xctemplate

MyApp.xctemplate

UIScene生命周期.xctemplate

UIScene Lifecycle.xctemplate 1/2 UIScene Lifecycle.xctemplate 2/2

Cocoa Touch App Base.xctemplate

Cocoa Touch App Base.xctemplate 1/2 Cocoa Touch App Base.xctemplate 2/2

Core Data Cocoa Touch App.xctemplate

Core Data Cocoa Touch App.xctemplate

IOS SwiftUI 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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接