繁体   English   中英

带有自定义项目模板的 Xcode 9 文件夹引用

[英]Xcode 9 folder references with custom project template

在 Xcode 9 中,当您创建一个组时,它也会在文件系统中创建一个链接文件夹。 所以你不需要手动为每个组创建文件夹。 关于 Xcode 9 中组和文件夹相关更改的一个很好的解释,请参阅此

我有一个自定义 Xcode 项目模板,它生成一个项目并在自定义文件夹中添加大量 Swift 样板源文件。 我的问题是我只能创建这样的组文件夹: 在此处输入图片说明 , 表示与文件系统目录无关的组。 这不好,因为如果您以后在 Xcode 中重命名文件夹,它将对相应的文件系统目录没有影响。

我的目标是编写一个 Xcode 项目模板,将我的自定义样板 swift 文件添加到真正的参考文件夹中,如下所示: 在此处输入图片说明 .

你可以从这里下载我的简化模板,把它放在:~/Library/Developer/Xcode/Templates

然后 Xcode > File > New > Project,然后选择 Custom-Template。

模板信息.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Kind</key>
    <string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
    <key>Concrete</key>
    <true/>
    <key>Identifier</key>
    <string>custom-swift.xcodeTemplate</string>
    <key>Description</key>
    <string>Swift starter project for iOS projects</string>
    <key>Ancestors</key>
    <array>
        <string>com.apple.dt.unit.cocoaTouchFramework</string>
    </array>
    <key>Nodes</key>
    <array>
        <string>Classes/Interfaces/CustomInterface.swift</string>
    </array>
    <key>Definitions</key>
    <dict>
        <key>Classes/Interfaces/CustomInterface.swift</key>
        <dict>
            <key>Group</key>
            <array>
                <string>Classes</string>
                <string>Interfaces</string>
            </array>
            <key>Path</key>
            <string>Classes/Interfaces/CustomInterface.swift</string>
        </dict>
    </dict>
</dict>
</plist>

它创建了一个这样的项目:

在此处输入图片说明

我想达到的目标:

在此处输入图片说明

任何帮助深表感谢! :)

更新 1:

我找到了一个小的解决方法.. 使用模板脚本创建您自己的复杂文件夹层次结构,然后简单地删除根文件夹 - 在我的例子中是“类”。 然后打开垃圾箱并将其拖回 Xcode,选择“如果需要复制项目”并选择“创建组”。 它将使用真实的参考文件夹构建文件夹结构。

这是您需要做的。 在命名文件之前在节点部分指定组。

<key>Nodes</key>
<array>
<string>MyGroup/File.swift:comments</string>
<array>

接下来在定义中提供键中的组名,如下所示:

<key>Definitions</key>
<dict>
<key>MyGroup/File.swift</key>
<dict>
<key>Path</key>
<string>File.swift</string>
<key>Group</key>
<string>MyGroup</string>
</dict>

希望这会有所帮助。

为此,可以使用 imessages 模板中使用的组件

组件的例子是

<key>Components</key>
    <array>
        <dict>
            <key>Identifier</key>
            <string>com.apple.dt.unit.messagesextensioncomponentios</string>
            <key>Name</key>
            <string>___PACKAGENAME___ MessagesExtension</string>
            <key>ProductBuildPhaseInjections</key>
            <array>
                <dict>
                    <key>TargetIdentifier</key>
                    <string>com.apple.dt.messagesOnlyApp</string>
                </dict>
            </array>
        </dict>
    </array>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM