XCode模板:移动AppDelegate

yrefmtwq  于 2023-06-07  发布在  其他
关注(0)|答案(2)|浏览(143)

我目前正在开发一些XCode模板,以使我的工作更容易。我复制了原始模板并根据我的需要进行了修改。到目前为止,一切都很好。但是,我无法找到一种方法将生成的AppDelegate文件移动到一个子文件夹中,而不会以它们的两个副本结束。
是否知道如何将AppDelegate移动到子文件夹?我需要修改哪个模板?
先谢谢你了!
克里斯

cpjpxq1n

cpjpxq1n1#

我只是设法按预期移动了所有文件。
重要的是要确保您编辑了层次结构中的所有文件,以确保Definitions部分中的每个键以及Nodes部分中的每个项目都已更改,以反映相同的文件夹结构。
更新:
大多数模板都包含这样的键值对:

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

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

flvtvl50

flvtvl502#

Xcode 14.3

这是Xcode 14.3的更新。我将展示如何将四个标准的swift文件放入一个子文件夹(支持文件),并在Xcode的项目导航器中更改文件的顺序。
这是标准的Xcode文件组织和我正在创建的一个。

首先,这里是标准iOS App的模板的顶层层次结构,显示了模板是如何继承的,以及哪些模板处理哪些文件。这些文件要么在模板内构建(B),要么整体包含在具有模板的文件夹中(I)。有些文件是跨多个模板构建的。

模板A继承模板B,将模板B列为祖先。请注意,.cocoaTouchApplicationBase在.sceneLifecycleApplication和. application. SwiftUI. iOS中都被列为祖先。树继续深入,但这个级别足以做我们想做的事情。
列出的五个模板都在Xcode应用程序包的这个文件夹中:

/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application

不应在原始位置更改这些文件。相反,它们应该被复制到您自己的Templates文件夹中并在那里进行修改(见下文)。变更涉及:

  • 给每个模板一个唯一的标识符。在我的例子中,我用com.stern.xyz替换了原始模板中的com.apple.dt.unit.xyz。你可以使用任何你想要的东西,只要它是独一无二的。
  • 更改模板的祖先,以指向已修改的模板
  • 执行更改以将文件放入“支持文件”文件夹。这涉及将“支持文件/”添加到文件的节点和定义中的文件名前面,并将值为“支持文件”的组添加到文件的定义中。
  • 分配一个SortOrder,指定它们在Xcode的项目导航器中出现的顺序。编号较低的文件显示在编号较高的文件上方。

在每个模板文件夹中,都有一个名为TemplateInfo. plist的文件。将对这些文件进行更改。双击TemplateInfo.plist在Xcode中打开它进行编辑。

步骤

下面是将AppDelegate、SceneDelegate、Assets和LaunchScreen移动到一个名为“Supporting Files”的子文件夹中,并将Main.storyboard移动到Xcode的Project Navigator中的ViewController和Info.plist之上的步骤。
1.在以下位置创建一个名为Templates的新文件夹:/Users/<username>/Library/Developer/Xcode
1.如果希望新模板显示在“新建项目”窗口的现有“应用程序”部分中,请在“模板”中创建名为Application的子文件夹。如果给予它一个不同的名称,一个新的部分将出现在新项目窗口中与该名称。
1.将五个模板文件夹复制到Application文件夹中

1.给予App.xctemplate指定一个新名称。我称之为MyApp. xctemplate。此名称将显示在“新建项目”窗口中。

1.按照红框所示对五个TemplateInfo.plist文件进行更改。您可以使用自己的反向域名来代替com.stern

MyApp.xctemplate

UIScene Lifecycle.xctemplate

可可Touch App Base.xctemplate

Core Data可可Touch App.xctemplate

IOS SwiftUI App.xctemplate

似乎没有必要包含iOS SwiftUI App.xctemplate,因为它不处理任何标准的swift文件。但是必须修改它,因为它提供了到com.apple.dt.unit.cocoaTouchApplicationBase的替代路径。如果Xcode找到模板的原始版本,它将在项目的顶层文件夹中创建第二个AppDelegate.swift文件。

最后的思考

使用模板创建文件时,文件总是出现在文件夹之前。我尝试将Info.plist的SortOrder设置为一个较大的数字(200),将其放置在Xcode的ProjectNavigator中的“SupportingFiles”子文件夹的下面,但它仍然显示在子文件夹的上面。我还尝试给子文件夹一个带有小SortOrder的Definitions条目,但它没有改变顺序。
尽管它是为Xcode 4编写的,但此链接中的文档对于理解模板仍然非常有用:Xcode 4 Template Docs

相关问题