[Swift]硬编码杀手-R.Swift

2,515 阅读2分钟

前言: 鄙人在年轻时曾为了 ctrl+c ctrl+v 写出一个模型类而沾沾自喜,也曾为了将各种参数生成静态字符串变量而暗暗开心.呵呵,真是年轻...


安利一个很好用的Swift 库,虽然不能解决前言所说的问题,但是能做到很多其他硬编码的问题.

R.swift

这个库的作用就是把我们图片/字体/文件/xib等等在写代码时需要传入 "name" 字符串生成对象的类,自动生成一套静态变量的代码,通过 R.swift 库的工具,更方便的生成所需对象,充分的发挥了链式编程的优势,也减少了我们粘贴复制这些没有技术含量的操作,而且编译阶段会检测语法的正确性.

安装方法:

建议使用 pod 导入,方便快捷,官方推荐

    1. 使用 pod 添加 R.swift
    1. 在 Xcode 中选中 Project => target => Build Phases, 点击+ ,选择"New Run Script Phase"

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

    1. Command + B 编译
    1. 在项目主目录下生成如下文件,拖入到项目中,不要选中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传送门看官方文档