欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Xcode Tips 006:自定义 Xcode 模板

程序员文章站 2022-04-13 11:38:10
...

Python实战社群

Java实战社群

长按识别下方二维码,按需求添加

Xcode Tips 006:自定义 Xcode 模板

扫码关注添加客服

进Python社群▲

Xcode Tips 006:自定义 Xcode 模板

扫码关注添加客服

进Java社群

作者丨齐小白

来源丨知识小集(ID:zsxjtip)

Xcode 模板是用来创建代码片段的工具。当你的工程中有很多可以标准化的代码时,比如 MVVM 架构中的各个组件,使用模板可以快速帮你生成代码,避免手动去新建 MVVM 每个组件的文件,然后再手动敲每个组件的通用代码。而且模板可以集成进 Xcode 的 新建文件 面板中,以我们熟悉的方式来创建。实际上面板中的项目都是现成的模板。

Xcode Tips 006:自定义 Xcode 模板

Xcode 所有的自定义的模板文件都放在 ~/Library/Developer/Xcode/Templates/ 中,可以按自己的需要在这个目录中创建一些子文件夹,这些子目录会以分组的形式出现在 新建文件 面板中,每个子文件夹可以定义多个模板。我们在这创建一个 Custom Templates 子目录。

每个 Xcode 文件模板都是以 .xctemplate 为扩展名的独立的文件夹。我们可以创建一个 MVVM.xctemplate 文件夹。然后在文件夹中新建一个 TemplateInfo.plist 文件来描述模板。这是个 XML 文件,如下所示:

<!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.IDEKit.TextSubstitutionFileTemplateKind</string>
    <key>Platforms</key>
    <array>
        <string>com.apple.platform.iphoneos</string>
    </array>
    <key>Options</key>
    <array>
        <dict>
            <key>Identifier</key>
            <string>productName</string>
            <key>Required</key>
            <true/>
            <key>Name</key>
<string>Module Name</string>
            <key>Description</key>
            <string>MVVM</string>
            <key>Type</key>
            <string>text</string>
            <key>Default</key>
            <string>MVVM Template</string>
        </dict>
    </array>
</dict>
</plist>

在这个配置文件中,需要注意一个值 Identifier,即创建文件时输入的一个标识,我们会在后续的文件或文件夹中,以 __VARIABLE_productName__ 作为变量值来替换所有引用到这个值的地方,包括文件夹名称、文件名称、和文件中的类名和变量名等。

实际上这时我们就可以在新建文件面板中看到一个 Icon 了。
不过我们还需要补全代码。

Xcode Tips 006:自定义 Xcode 模板

我们简单地以 视图控制器和 ViewModel 为例。我们在 MVVM.xctemplate 下添加一个文件夹,命名为 __VARIABLE_productName__,同时在这个子文件夹下分别新建文件 __VARIABLE_productName__ViewController.swift和 __VARIABLE_productName__ViewModel.swift,内容分别如下:

// __VARIABLE_productName__ViewController.swift

import UIKit

class ___VARIABLE_productName___Controller: UIViewController {
    
    let viewModel: ___VARIABLE_productName___ViewModel
    let mainView: ___VARIABLE_productName___View
    
    init() {
        viewModel = ___VARIABLE_productName___ViewModel(withModel: ___VARIABLE_productName___())
        mainView = ___VARIABLE_productName___View()
        super.init(nibName: nil, bundle: nil)
        
        mainView.configure(withViewModel: viewModel)
    }
    
    required init?(coder _: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}
// __VARIABLE_productName__ViewModel.swift

import UIKit

class ___VARIABLE_productName___ViewModel {
    private let model: __VARIABLE_productName: identifier__

    init(withModel model: __VARIABLE_productName: identifier__) {
        self.model = model
    }
}

这时我们便可以在新建文件面板中通过我们的自定义模板来创建文件了,如下图。

Xcode Tips 006:自定义 Xcode 模板

Xcode Tips 006:自定义 Xcode 模板

当然这里只是一个简单的示例,还有一些地方需要完善,比如说自定义新建文件面板中的图标,以 Group 的形式新增文件夹等等,读者可以自行探索。

Xcode Tips 006:自定义 Xcode 模板

程序员专栏 扫码关注填加客服 长按识别下方二维码进群

Xcode Tips 006:自定义 Xcode 模板

近期精彩内容推荐:  

Xcode Tips 006:自定义 Xcode 模板 程序员写的这一行代码,被国家博物馆收藏了

Xcode Tips 006:自定义 Xcode 模板 2020 年 9 月程序员工资统计,我扯后腿了~

Xcode Tips 006:自定义 Xcode 模板 提高国内访问 GitHub 的速度的 9 种方案

Xcode Tips 006:自定义 Xcode 模板 Python是强类型语言,还是弱类型语言?

Xcode Tips 006:自定义 Xcode 模板

Xcode Tips 006:自定义 Xcode 模板

在看点这里Xcode Tips 006:自定义 Xcode 模板好文分享给更多人↓↓