背景
在iOS的资源管理上,如本地化多语言或者图片,都是用string的形式来读取资源,这样也带来了一个问题。 比如指定的资源不存在,或者资源名称被更新,则会出现无法加载资源的问题。
常见代码如下:
let image = UIImage(named: "icon")//这里只是指定了icon的图片,但是如果图片变化,或者不存在,则不会检查到
解决的办法也比较简单,就是在编译的时候增加资源检查。 SwiftGen 就是其中一个解决该问题的三方库。
原理
SwiftGen 会根据yml文件配置规则,读取对应的资源目录,然后将所有的资源动态生成代码中的值。 如果出现资源不存在或者变化就会报错
如: 读取Asset中的所有图片,然后生成为Asset类,提供所有图片的值
接入
- 本地安装swiftgen
brew install swiftgen
- cocoapods接入
这里推荐debug的时候用即可,毕竟所有的代码都会执行之后再上传的,如果希望release检查,也可以用
pod 'SwiftGen', '6.5.1', :configurations => ['Debug']
- 配置swiftgen,制定input 和 output
这里我们指定了两种资源,st