建立 Xcode 的檔案範本

什麼是範本?

Xcode 11 beta 2 新增檔案畫面

在新增檔案的時候,會有預設的這幾種類型可以選擇;而當我們有一些自己常用的架構,如 Coordinator、ViewModel 等,可以自建一個範本來使用。

下面舉例幾個預設的 Swift 檔案

Swift File

位置在
/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates/Source/Swift File.xctemplate

//___FILEHEADER___

import Foundation

SwiftUI View

位置在
/Applications/Xcode-beta.app/Contents/Developer/Library/Xcode/ExtraTemplates/File Templates/User Interface

//___FILEHEADER___

import SwiftUI

struct ___FILEBASENAMEASIDENTIFIER___ : View {
    var body: some View {
        Text(/*@START_MENU_TOKEN@*/"Hello World!"/*@END_MENU_TOKEN@*/)
    }
}

#if DEBUG
struct ___FILEBASENAMEASIDENTIFIER____Previews : PreviewProvider {
    static var previews: some View {
        ___FILEBASENAMEASIDENTIFIER___()
    }
}
#endif

這些是跟著 Xcode.app 走的,而若是我們使用者自定義要使用的,得放在
/Users/UserName/Library/Developer/Xcode/Templates
先建立一個資料夾,或是可以到上述的位置複製一份過來。
需要至少三個檔案

  • FILEBASENAME.swift
  • TemplateIcon.png
  • TemplateInfo.plist

我自己的使用方式是複製系統的 Swift file 來做修改 🔧
也比較好去熟悉可替換文字和 header 的使用方式 👍

Xcode beta with CocoaPods

Xcode 10 beta 的 Swift 版本為 4.2,而若你目前所使用的 Pods 多數為 Swift 4 的話,該怎麼辦呢?
你可以在 Podfile 裏頭加上全域的參數來規範所有 Pods 的 Swift version:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '4'
        end
    end
end

如此一番便可以輕鬆地在 Pods 還沒全面支援 Swift 4.2 時就可以使用 Xcode 10 Beta 開發👏

DeviceSupport

每當 iOS Beta 更新時,原先的 Xcode  便會無法支援,需要透過從 Xcode Beta 的 DeviceSupport 複製新的版本到正式版之中才能使用;
反正都會做這件事,不如就將 Xcode Beta 裡頭的 DeviceSupport 上傳到 GitHub 上提供給 iOS 有更新,但還沒下載新的 Xcode Beta 的人使用吧!
傳送門點我