Xcode 9文件夹引用与自定义项目模板

bal*_*630 15 directory xcode templates project ios

在Xcode 9中,当您创建组时,它也会在文件系统中创建链接文件夹.因此,您无需手动为每个组创建文件夹.关于Xcode 9中与组和文件夹相关的更改的一个很好的解释,请参阅此内容.

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

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

您可以从此处下载我的简化模板,将其放在:〜/ Library/Developer/Xcode/Templates下

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

TemplateInfo.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>
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

我想要实现的目标:

在此输入图像描述

任何帮助深表感谢!:)

更新1:

我发现了一个小的解决方法..使用模板脚本创建自己的复杂文件夹层次结构然后只需删除根文件夹 - 在我的例子中为"Classes".然后打开"废纸篓"并将其拖回Xcode,选择"复制项目(如果需要)"并选择"创建组".它将使用真实的参考文件夹构建文件夹结构.

Riz*_*oob 0

为此,可以使用 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>
Run Code Online (Sandbox Code Playgroud)