前言: 鄙人在年轻时曾为了 ctrl+c ctrl+v 写出一个模型类而沾沾自喜,也曾为了将各种参数生成静态字符串变量而暗暗开心.呵呵,真是年轻...
安利一个很好用的Swift 库,虽然不能解决前言所说的问题,但是能做到很多其他硬编码的问题.
R.swift
这个库的作用就是把我们图片/字体/文件/xib等等在写代码时需要传入 "name" 字符串生成对象的类,自动生成一套静态变量的代码,通过 R.swift 库的工具,更方便的生成所需对象,充分的发挥了链式编程的优势,也减少了我们粘贴复制这些没有技术含量的操作,而且编译阶段会检测语法的正确性.
安装方法:
建议使用 pod 导入,方便快捷,官方推荐
-
- 使用 pod 添加 R.swift
-
- 在 Xcode 中选中 Project => target => Build Phases, 点击+ ,选择"New Run Script Phase"

-
- 将刚创建的 Run Script 拖到
Check Pods Manifest.lock和Compile Sources中间
- 将刚创建的 Run Script 拖到
-
- 脚本输入
"$PODS_ROOT/R.swift/rswift" generate "$SRCROOT/R.generated.swift",input files 添加$TEMP_DIR/rswift-lastrun,out files 添加$SRCROOT/R.generated.swift
- 脚本输入

-
- Command + B 编译
-
- 在项目主目录下生成如下文件,拖入到项目中,不要选中
Copy items if needed(这样的话如果换了资源,重新编译这个文件就会变化,如果资源换已经在使用然后换名字的话,编译阶段就会报错提醒的)
- 在项目主目录下生成如下文件,拖入到项目中,不要选中
- 7.开始开心的使用了
官方提醒: 记得把*.generated.swift 加入到.gitignore 中,以免引起冲突
使用方法:
项目中有以下资源

简单的使用代码如下
///color
view.backgroundColor = R.color.myRed()
///image
imgView.image = R.image.first()
///xib view
let v = R.nib.cellView(owner: nil)
///tableView regist
tableView.register(R.nib.cellView)
tableView.dequeueReusableCell(withIdentifier: R.reuseIdentifier.cellView, for: indexPath)
///file
let musicUrl = R.file.wordsModule2Mp3()
let musicPath = R.file.wordsModule2Mp3.path()
let json = R.file.someJson()
// duplicateJson 大小写冲突的文件不会生成
具体的可以通过R.swift传送门看官方文档