Создание групп с использованием настраиваемого шаблона xcode 8

Я успешно создал шаблон Xcode 8, который будет реагировать на эти действия:

  • У вас уже есть рабочий проект
  • Вы хотите добавить свой собственный быстрый файл в этот проект

Шаг за шагом, как это сделать:

Я создал под:

/Users/*YOUR_USER_NAME*/Library/Developer/Xcode/Templates/File Templates

Имя папки Custom/Interactor.xctemplate

Файлы внутри этой папки:

Итак, когда я нажимаю правой кнопкой мыши и создаю новый файл, я выберу пользовательский файл:

создать новый файл

Создание пользовательского файла

В приведенном выше примере работает и создается мой пользовательский файл:

успешно создать пользовательский файл

То, что я пытаюсь достичь:

Я пытаюсь создать группу, которая будет содержать новый пользовательский файл. Нет необходимости в реальной папке или сложных задачах, просто группе, содержащей фактический файл.

Итак, конечный результат будет:

введите описание изображения здесь

Поскольку нет документации, объясняющей, как создать пользовательский шаблон, я использовал множество ссылок: ref1, ref2, ref3, ref4.

Вот файл 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>DefaultCompletionName</key>
    <string>MyCustomInteractor</string>
  <key>Description</key>
  <string>Custom interactor</string>
  <key>Kind</key>
  <string>Xcode.IDEKit.TextSubstitutionFileTemplateKind</string>
  <key>Options</key>
  <array>
        <dict>
            <key>Description</key>
            <string>Custom interactor</string>
            <key>Identifier</key>
            <string>fileName</string>
            <key>Name</key>
            <string>Custom name</string>
            <key>NotPersisted</key>
            <true/>
            <key>Required</key>
            <true/>
            <key>Type</key>
            <string>text</string>
        </dict>
    <dict>
            <key>Default</key>
            <string>___VARIABLE_fileName:identifier___</string>
            <key>Identifier</key>
            <string>productName</string>
            <key>Type</key>
            <string>static</string>
    </dict>
    <dict>
            <key>Default</key>
            <string>___VARIABLE_fileName:identifier___Interactor</string>
            <key>Description</key>
            <string>The interactor name</string>
            <key>Identifier</key>
            <string>interactorName</string>
            <key>Name</key>
            <string>Interactor Name:</string>
            <key>Required</key>
            <true/>
            <key>Type</key>
            <string>static</string>
    </dict>
  </array>
  <key>Platforms</key>
  <array>
        <string>com.apple.platform.iphoneos</string>
  </array>
    <key>SortOrder</key>
    <string>99</string>
</dict>
</plist>

Что я пробовал:

Я попытался вставить этот ответ в мой TemplateInfo.plist, но ничего не происходит. По-моему, это может быть связано с вопросом о масштабах - возможно, я не вставляю ключи Definitions или Nodes в нужное место. Сбой кода xml Definitions и Nodes, с которым я боролся:

<key>Definitions</key>
<dict>
    <key>___FILEBASENAME___Interactor.swift</key>
    <dict>
        <key>Group</key>
        <string>Custom Interactor</string>
        <key>Path</key>
        <string>___FILEBASENAME___Interactor.swift</string>
    </dict>
</dict>

<key>Nodes</key>
<array>
    <string>___FILEBASENAME___Interactor.swift</string>
</array>

Итак, где я должен вставлять эти ключи или что я делаю неправильно?

Любая помощь была бы очень оценена.

Спасибо.

Ответ 1

вы можете создать группу, а также папку в каталоге проекта, используя этот

<key>Swift</key>
            <dict>
                <key>Nodes</key>
                <array>
                    <string>ViewController.swift:comments</string>
                    <string>ViewController.swift:imports:importCocoa</string>
                    <string>ViewController.swift:implementation(___FILEBASENAME___: UIViewController)</string>
                    <string>ViewController.swift:implementation:methods:viewDidLoad(override func viewDidLoad(\))</string>
                    <string>ViewController.swift:implementation:methods:viewDidLoad:super</string>
                    <string>ViewController.swift:implementation:methods:didReceiveMemoryWarning(override func didReceiveMemoryWarning(\))</string>
                    <string>ViewController.swift:implementation:methods:didReceiveMemoryWarning:super</string>
                    <string>Constant/CommonExtension.swift</string>
                </array>
            </dict>

и определение точно так же

    <key>Definitions</key>
<dict>
    <key>Base.lproj/Main.storyboard</key>
    <dict>
        <key>Path</key>
        <string>Main.storyboard</string>
        <key>SortOrder</key>
        <integer>99</integer>
    </dict>
    <key>Group</key>
    <array>
        <string>Singletone</string>
    </array>
    <key>Constant/CommonExtension.swift</key>
    <dict>
        <key>Path</key>
        <string>Constant/CommonExtension.swift</string>
        <key>Group</key>
        <array>
            <string>Constant</string>
        </array>
    </dict>
</dict>