SwitGenユーザー(Homebrew)


紹介する


SwitGenについて簡単に説明します.
分かりやすいシナリオで説明したいと思います.
  • Assetディレクトリでは、Icons、Image、Colorなどを定義します.これらをプロジェクトで使用するには、各ジェネレータ(Colorの場合、UIColor(named:)を使用して指定した文字列定数をAssetにロードする必要があります.
  • .
    let customColor = UIColor(named: "customRed")!
    この方法は文字列をハードコーディングするため、エラーが発生し、実行時にエラーが特定されるため、コンパイル時にエラーを見つけるのは難しい.
    したがって、補足措置としては、以下のように使用することができる.
    enum Constans: String {
      let customRed = "customRed"
    }
    
    extension UIColor {
      static var customRed: UIColor {
        UIColor(named: Constans.customRed.rawValue) ?? UIColor()
      }
    }
    
    let customRed: UIColor = .customRed
    追加されたリソースが多い場合は、マクロコードを記述して一括生成する方法も使用されます.
    この部分をシンプルにしたのがSWIFITGEN.
    SwitGenでは、テンプレートを使用して上記の手順を実行できます.
    これは、ハードコーディングエラーとコンパイル時にエラーをキャプチャするのに役立ちます.
    どのように使用されているかを理解してみましょう.

    設定


    インストール前の作業環境は次のとおりです.
    1. m1 macbook pro 16g
    2. Xcode 13.2
    3. Monterey 12.1
    インストール方法
    githubにもよく紹介されていて、いろいろな方法に長所と短所があるようです.
    1. Download the ZIP
    2. CocoaPods
    3. Homebrew
    4. Mint
    ZipとCocoaPodsは、プロジェクトごとに容易に個別に適用できます.
    HomebrewとMintはシステム全体で使用できるので、各項目を1つずつ設定したくない場合は選択できます.
    Homebrewを選びました.Homebrewに設定されていますが、プロジェクトごとに違います.swifgen.ymlを別に適用してみます.

    Homebrewのインストール


    terminalにbrewでswifgenをインストールします.
    brew update
    brew install swiftgen
    この場合、hoemディレクトリのデフォルトはswiftgenです.ymlが位置決めされます.

    Switgenの基本的な使い方


    swiftgenの基本的な使用方法はswiftgenです.ymlでテンプレートを作成します.
    テンプレートをswiftgenでグループ化します.
    swiftgen.ymlでは、これらのバンドルパッケージのAssets.xcassetsをグループ化します.Asset+Generated.swift(サンプル名)を生成します.Asset+Generated.swiftは、Assetで定義されたコンテンツに列挙的にアクセスすることを可能にする.
    例:
    let customRed: UIColor = Asset.Color.customRed.color
    上記のように.タイプ説明書は参考までに書いてあるので、必要ではありません.
    まず、それがどのように動いているかを簡単にテストします.
    端末に入力:
    cd ~/Desktop
    swiftgen config init
    ここでエラーが発生した場合、brewはswiftgenをインストールしていません.
    まず、使いやすいようにデスクトップディレクトリに移動してから作業します.
    上のコマンドはswifgenです.ymlの命令を生成します.
    Dekstopディレクトリに移動するのはswiftgenです.ymlが生成されます.swiftgen config initコマンドを入力するとswifgenになるかもしれません.ymlファイルは自動的にエディタで開きます.swiftgen.ymlの内容を見て、注釈を詳しく使いたいなら、ぜひ読んでみてください.
    まず資産に集中しましょう.
    作成したばかりのswiftgen.yml
  • プロジェクトから取得します.
  • パブリッシュ後はswiftgenは実行されないため、単独でインポートする必要はありませんが、説明を容易にするためにインポートします.プロジェクトに追加する必要はありません.必要なディレクトリの場所を指定するだけです.
    ymlコンテンツの表示
    # xcassets:
    #   inputs:
    #     - Main.xcassets
    #     - ProFeatures.xcassets
    #   outputs:
    #     - templateName: swift5
    #       params:
    #         forceProvidesNamespaces: true
    #       output: XCAssets+Generated.swift
    これはAssetをグループ化してから変換する部分で、調理で使用できます.
    使いたい部分はコールアッセンセットを別途作りたいです.Asset Catalogが新設されました.

    名前はコール

    いくつかのカスタムカラーをColor Assetに格納します.

    swiftgen.ymlに次の内容を追加します.
    xcassets:
      inputs:
        - Color.xcassets
      outputs:
        - templateName: swift5
          params:
            enumName: Colors
          output: Color+Generated.swift
    内容をよく見る.
  • xcasets:xcasetsタイプをグループ化するコマンドで、ドキュメントにはxcasetsのほかにstring、ibなどがあります.
  • 入力:生成したAsset Catalogを入力するファイル
  • に転送します.
  • 出力:出力する領域
    -templateName:swift 5、swift 4を特別に書く必要がある場合は、その内容を渡すことができます.詳細については、ドキュメントを参照してください.
  • params:ファイルを出力するときにいくつかのオプションを指定できます.
  • enumName:個別に設定しない場合、デフォルトの列挙タイプの名前はAssetです.
  • 出力:出力するファイル名
  • 完了したらterminalを使用してymlが存在するディレクトリにナビゲートします.
    次に、次のコマンドを入力します.swiftgen config runコマンドが正常に実行された場合File written: Color+Generated.swiftに表示されます.
    今は何も見えないはずですが、そのカタログに行けばColor+Generated.swiftファイルが生成されます.
    プロジェクトに追加します.
    struct ContentView: View {
      var body: some View {
        Text("Hello, world!")
          .padding()
          .foregroundColor(Colors.customRed.color)
      }
    }
    extension View {
      func foregroundColor(_ uicolor: UIColor) -> some View {
        self.foregroundColor(Color(uicolor))
      }
    }
  • 拡張子は
  • で、forwardColorから直接UIcolorを生成できます.
    実際、色Color.customRed.colorに近づくことができます.形式Colorは、ymlによって記述されたenumNameである.
    基本的なワークフローですのでまとめてみます
  • swiftgen.yml
  • の作成
  • swiftgen.ymlテンプレートコンテンツの作成
  • 端末swiftgen config run
  • 生成されたswiftファイル項目
  • に追加
    はい.
  • ここで考えてみると、Asset Catalogに新しいAssetを追加するときにterminalキーswiftgen config runを押すのは面倒でしょうか?こんな考えがあります.この部分を自動化できるのはRun Scriptです.

    RunScript


    プロジェクト→ターゲット→コンストラクションフェーズに移動します.
    Run Scriptを追加しましょう

    runscriptは,構築時に端末を自動的に開き,スクリプト内のコンテンツを実行する機能であると考えられる.

    このシェルに内容を書きます.
    ここの前に駅でやりました.swiftgen config runに記入すると
    構築のたびにセグメント化され、Generated.swiftが生成されます.

    上の内容を入れて構築すると~

    ミスを犯す.
    特別な内容ではなくterminalでswiftgenを実行したいのですが、ありません.
    brewにインストールされているswifgenは実行する必要があるのでpassを指定します.
    PATH=/opt/homebrew/bin:$PATH
    swiftgen config run

    ここで実行がまた間違った.

    今回はSwitgenymlが見つからないことを示します.うん.
    コマンドを実行する前に、そのディレクトリがどこにあるかを見てみましょう.
    PATH=/opt/homebrew/bin:$PATH
    pwd
    ls
    swiftgen config run
    スクリプトに上記の内容に変更した後に発生したエラーが表示された場合、

    プロジェクトフォルダにはありますが、ターゲットフォルダにはありません.
    ターゲットフォルダに入ればいいです
    PATH=/opt/homebrew/bin:$PATH
    cd SwiftGenPractice
    swiftgen config run
    今構築すれば間違いなく構築され、正常に構築されます!

    内線。


    この場合はswfitgenです.これは、ymlを検索してコンテンツパケットごとにファイルを生成する方法であり、実際には、例のようにパケット化されたコンテンツが多くなければ、ymlなしでインラインすることもできる.
    swiftgen xcassets Resources/Images.xcassets --templateName swift5 --output "Constants/Assets+Generated.swift"

    整理する

  • swiftgenは自動化ツールであり、適切に使用すれば非常に役立ちます.
  • どうしてもhomebrewに設定し、各項目が異なる場合は、上記のように苦労します.動きはいいけど、これが正しい方法なのか分からない.
  • テンプレートはカスタマイズまたはグループ化できますので、必ず文書を確認してください.
    完全なコード