はじめに
SwiftGenを初めて使ってみたので忘れないように記録しておきます。
SwiftGenとは
公式からはこのように説明されていました
SwiftGen is a tool to automatically generate Swift code for resources of your projects (like images, localised strings, etc), to make them type-safe to use.
英語は苦手なので日本語も載せておきます
SwiftGenは、プロジェクトのリソース(画像やローカライズされた文字列など)に対してSwiftコードを自動生成し、タイプセーフで利用できるようにするツールです。
どういうことか?
通常、画像を表示させようと思ったら以下のようになります。
Image("share")
しかし、SwiftGenを使用すれば以下のように書くことができます。
Image(Asset.share.name)
これは便利ですね
今回使用するサンプルプロジェクト
やりかた
Mintfile
cd プロジェクトフォルダ
Mintfileを作成します
touch Mintfile
Mintfileを開きます
open Mintfile
MintfileにSwiftGenを記載します
SwiftGen/SwiftGen
SwiftGenをインストールします
mint bootstrap
swiftgen.yml
swiftgen.ymlを作成します
touch swiftgen.yml
swiftgen.ymlを開きます
open swiftgen.yml
swiftgen.ymlを編集します
xcassets:
inputs:
# あなたのプロジェクトのパスに変えてください
- swiftgen-mint-sample/Assets.xcassets
outputs:
- templateName: swift5
# あなたのプロジェクトのパスに変えてください
output: swiftgen-mint-sample/Assets.swift
Run Script
① プロジェクトを選択します
② ターゲットを選択します
③ 「Build Phases」を選択します
④ 「+」を押します
⑤ 「New Run Script Phase」を押します
export PATH=/opt/homebrew/bin:$PATH
if which mint >/dev/null; then
# SwiftGen
xcrun --sdk macosx mint run swiftgen
else
echo 'warning: mint not installed.'
fi
ビルド
生成されたファイルをXcodeで読み込む
右クリックをして「Add File to “プロジェクト名”...」を選択します
生成された「Assets.swift」を選択して、「Add」を押します
使い方
import SwiftUI
struct ContentView: View {
var body: some View {
Image(Asset.share.name)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
おわり
これから積極的に使っていきたいです!