[DEV] 如何使用 Xcode 的 Template 功能來幫助開發 — 1

Rice Lin
5 min readJul 15, 2022

--

在日常的開發過程中,你會不會有時候感覺,常常會需要重複執行開新檔案,或者使用重複的變數命名規則?

比方說,要開發一個新的畫面,在MVVM的架構下,就會需要做:

  1. 新建一個 XYZViewController
  2. 新建一個 XYZViewModel
  3. XYZViewController 裡加入 let viewModel: XYZViewModel

假設新的需求要10個畫面,以上動作就得重複10次;而如果這10個畫面分給10個人做,有辦法保證大家做出來的結果都一樣嗎?

這邊就要來介紹 XcodeTemplate 功能,來 加速 / 標準化 這些重複的流程。

今天我們先介紹 Xcode 內建的 Template

Build-in templates

其實 Xcode Template 並不是一個新的功能,而且你在平常開發的時候就已經在使用了。

舉例來說,在建立一個新的 UITableViewCell 的時候,我們會在目的路徑點右鍵,選擇 New File...,接著就會看到以下畫面:

Xcode 就會幫你建立好兩個檔案:

ABCTableViewCell.swift
ABCTableViewCell.xib

並且在ABCTableViewCell.swift裡,已經幫你帶入預設的classfunction

import UIKitclass ABCTableViewCell: UITableViewCell {    override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}

}

這其實就是 Xcode 內建的 template,我相信你一定不陌生,只是不知道他是怎麼做的。

那我們用的 UITableViewCell template 到底長怎樣呢?

它藏在一個非常非常深的地方,讓我們打開 Terminal App,輸入以下指令來尋找:

find {path_to_your/Xcode.app} -name "Cocoa Touch Class.xctemplate"

等待執行完成之後,可以看到找到兩個結果:

{path_to_your/Xcode.app}/Contents/Developer/Platforms/AppleTVOS.platform/Developer/Library/Xcode/Templates/File Templates/tvOS/Source/Cocoa Touch Class.xctemplate
{path_to_your/Xcode.app}/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/iOS/Source/Cocoa Touch Class.xctemplate

分別是 tvOSiPhoneOStemplate,我們把第二個結果複製,切換到 Finder,在上方 Menu 選擇 Go -> Go to Folder...,或者按下 Command + Shift + G,貼上路徑後按下 Enter,就可以找到 Cocoa Touch Class.xctemplate

裡面有包含各種 Cocoa Touch Class,找到剛剛我們用的 UITableViewCellXIBSwift,可以看到裡面有一個 .swift 檔案,一個 .xib 檔案,這兩個檔案就是 UITableViewtemplate

我們把 ___FILEBASENAME___.swift檔案打開,可以看到裡面內容如下:

//___FILEHEADER___import UIKitclass ___FILEBASENAMEASIDENTIFIER___: ___VARIABLE_cocoaTouchSubclass___ {    override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}

}

是不是和我們在 Xcode 建立 UITableViewCell 的內容有87%像?

看到這邊你已經了解 Xcode 內建的 template 存放的位置,以及檔案的架構。

下一集會來介紹要怎麼建立 自己/團隊 使用的客製化 template,來幫助你的開發流程。

覺得我的文章有用的話還請不吝鼓掌,也可以 Follow 我來即時取得文章更新通知。

有任何問題歡迎在下面留言討論,感謝大家!

--

--

Rice Lin
Rice Lin

Written by Rice Lin

An Apple developer, UX researcher, digital market strategist, human resource researcher, a father, and a traditional Gemini. Contact: rice.lin@icloud.com