使用自定义模板创建组xcode 8

时间:2017-01-05 12:12:23

标签: xcode templates xcode8 xcode-template

我已成功创建了一个响应这些操作的Xcode 8模板:

  1. 您已经有一个工作项目
  2. 您想将自定义swift文件添加到此项目
  3. 一步一步,如何实现:

    我创建于:

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

    文件夹名称Custom/Interactor.xctemplate

    该文件夹中的文件:

    • ___ FILEBASENAME ___交互器
    • TemplateInfo.plist
    • TemplateIcon.png
    • TemplateIcon@2x.png

    因此,当我右键单击并创建新文件时,我将选择自定义文件:

    create new file

    Creating custom file

    上面的示例可以运行并创建我的自定义文件:

    successfully creating a custom file

    我想要实现的目标:

    我正在尝试创建一个包含新自定义文件的组。不需要实际的文件夹或复杂的任务,只需要包含实际文件的组。

    所以最终结果将是:

    enter image description here

    由于没有文档说明如何创建自定义模板,因此我使用了很多引用:ref1ref2ref3ref4

    以下是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>
    

    我尝试了什么:

    我试图将this回答插入我的TemplateInfo.plist但没有任何反应。在我看来,它可能与范围问题有关 - 也许我没有在正确的位置插入DefinitionsNodes键。 xml DefinitionsNodes代码剪辑我一直在努力:

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

    那么我应该在哪里插入这些键或者我做错了什么?

    非常感谢任何帮助。

    感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用此

在项目目录中创建组和文件夹
this.playerService
    .asObservable()
    .subscribe(player => {
        if (player === {}) {
            this.route.params.subscribe(params => {
                this.playerService.getPlayer(params.id); //voila, your player is updated
            })
        }
        //remember to update the value
        this.currentPlayer = player
    })

和定义就像这样

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

答案 1 :(得分:0)

如果这对某人有帮助,Xcode 12.4 - 项目模板。

                    <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>Info.plist:UIMainStoryboardFile</string>
                        <string>Info.plist:UIApplicationSceneManifest:UISceneStoryboardFile</string>
                        <string>Some/MainCoordinator.swift</string>
                        <string>Some/Other/TestClass.swift</string>
                    </array>
                    <key>Definitions</key>
                    <dict>
                        <key>Some/MainCoordinator.swift</key>
                        <dict>
                            <key>Group</key>
                            <array>
                                <string>Some</string>
                            </array>
                            <key>Path</key>
                            <string>MainCoordinator.swift</string>
                        </dict>
                        <key>Some/Other/TestClass.swift</key>
                        <dict>
                            <key>Group</key>
                            <array>
                                <string>Some</string>
                                <string>Other</string>
                            </array>
                            <key>Path</key>
                            <string>TestClass.swift</string>
                        </dict>
                    </dict>

该组是一些。 里面有一个文件。 它内部还有一个子组,称为“其他”。 在Other里面有一个文件叫做TestClass。

enter image description here