最近、iOSアプリの実装でリソースをタイプセーフに扱いたいという理由でSwiftGenを導入しました
SwiftGenについて
ざっくり説明すると
- Assets Catalogs
- Localizable.strings
- storyboard
- UIColor
などのリソースを自動でenumへ変換し、利用時に補完してくれたり誤字を防いでくれたりするものです
XcodeのBuild Phasesに変換用のScriptを追加しておけば、ビルド時に毎回指定のリソースを読み取り、enumを記述したファイルを自動生成してくれるというスグレモノです
Buildされないとenumが使えない
Build Phasesに書いたScriptは、書いたコードのBuildが通った後に実行されます
つまり
コーディング中 | → | 書いたコードのBuildがSuccess | → | Build PhasesのScript実行 |
---|---|---|---|---|
enumを使えない | enum生成 |
という状態になります
一度自動生成の値を使わないコードを書き、Buildを通してから初めて使えるようになる為、二度手間になります
BuildがFailedしてもBuild PhasesのScriptを実行
毎回
「Buildが通る状態にしてからBuildし、Build PhasesのScriptを実行させることでenumを生成」
なんてことをするのは面倒です
そこで、Xcodeの設定を使い、Buildが途中でFailedしても最後まで実行してくれるようにします
以上で、エラーがあっても強制的にBuildを継続し、Scriptを実行することでenum等の値を生成することができるようになりました