R.swift 和 SwiftGen 资源转换使用指南
R.swift (原始代码会打包到项目?)
-
Pod
platform :ios, '12.0' target 'LBtest' do# Comment the next line if you don't want to use dynamic frameworksuse_frameworks!pod 'R.swift' # pod 'SwiftGen', '~> 6.0' end
-
pod install
-
设置 执行脚本 TARGETS–>Build Phases–>New Run Script Phase
-
添加如下 code
if [ -f "${PODS_ROOT}/R.swift/rswift" ]; then"${PODS_ROOT}/R.swift/rswift" generate "${SRCROOT}/R.generated.swift" elseecho "warning: R.swift not found, run 'pod install' to install R.swift."
-
拖动当前 Run Script Phase 到 Check pods Manifest.lock 和 Compile Sources 之间
-
在Xcode 中 新建一个 R.generated.swift 文件 位置在 项目根目录 即 当前项目文件夹下
-
使用事例
Localizable.string
"name" = "姓名"; "age" = "18";
let name = R.string.localizable.name() debugPrint(name) let age = R.string.localizable.age() debugPrint(age)
SwiftGen (原始代码不会打包到项目)
-
Pod
platform :ios, '12.0' target 'LBtest' do# Comment the next line if you don't want to use dynamic frameworksuse_frameworks!#pod 'R.swift'pod 'SwiftGen', '~> 6.0' end
-
pod install
-
设置 执行脚本 TARGETS–>Build Phases–>New Run Script Phase
-
添加如下 code
[[ -f "${PODS_ROOT}/SwiftGen/bin/swiftgen" ]]; then${PODS_ROOT}/SwiftGen/bin/swiftgen config run else "warning: SwiftGen is not installed. Run 'pod install --repo-update' to install it." fi
-
拖动当前 Run Script Phase 到 Check pods Manifest.lock 和 Compile Sources 之间
-
在项目根目录下创建 swiftgen.ym 文件
input_dir: LBtest output_dir: . strings:inputs: en.lprojfilter: .+\.strings$outputs:- templateName: structured-swift5output: Localizable.swiftparams:enumName: bslocalizable #xcassets: # - inputs: Logos.xcassets # outputs: # - templateName: swift5 # output: Logos-Constants.swift # params: # enumName: Logos # - inputs: # - Colors.xcassets # - Images.xcassets # outputs: # - templatePath: Resources/my-assets-custom-template.stencil # output: Assets-Constants.swift
-
将Localizable.swift 添加到 Xcode 项目
-
使用事例:
Localizable.string
"name" = "姓名"; "age" = "18";
let name = bslocalizable.name debugPrint(name)let age = bslocalizable.age debugPrint(age)
-
Homebrew
$ brew install swiftgen
在项目根目录下创建 swiftgen.ym 文件
input_dir: LBtest output_dir: . strings:inputs: en.lprojfilter: .+\.strings$outputs:- templateName: structured-swift5output: Localizable.swiftparams:enumName: bslocalizable #xcassets: # - inputs: Logos.xcassets # outputs: # - templateName: swift5 # output: Logos-Constants.swift # params: # enumName: Logos # - inputs: # - Colors.xcassets # - Images.xcassets # outputs: # - templatePath: Resources/my-assets-custom-template.stencil # output: Assets-Constants.swift
-
进入当前根文件夹下 打开终端执行run
swiftgen config run