使用R.swift来解决iOS开发中以string作为参数的不安全方法

本文转载自:http://www.jianshu.com/p/0c97ef3cdc38

引言

在iOS开发中,资源的调用方面一直是不太严谨的。 比如说,我们要在代码中初始化一个 UIImage。那么通常的做法是:

let image = UIImage(named: "Toolbar_OK_On")

传入的参数是以字符串的方式传入,那么这个字符串便是我们要讨论的不严谨的地方,它有哪些风险呢?

1.编写代码时不一小心手误,写错了(当时的你可能不知道)。

2.根据项目情况,资源增多,需要对资源的名称重写整理和维护,也就是要修改。

3.这个资源已经不再需要使用,可以删除了。

那么遇到上面讲到的情况,我们就需要对曾经写过的代码进行对应的检查和修正。但是,这需要开发者自己养成好习惯,才能防止一个新的BUG产生,或者是一段没用得代码被编译。

而R.swift的出现彻底解决了资源调用不严谨的问题,通过 R.swift 生成的代码在Xcode编译时即可检查出资源使用上是否存在安全隐患。为此,你必须修正你的代码,否则,你是编译不过去的!

什么是R.swift?

R.swift 是一个Mac上面终端程序,采用Swift编写并作用于Swift,R.swift 最终会生成一个名字叫做 R.generated.swift 的类文件。

它是一个强类型资源调用工具,也是我们这篇文章的主角!

从前,你需要这样编写资源调用的相关代码:

leticon= UIImage(named:"settings-icon")letcell= tableView.dequeueReusableCellWithReuseIdentifier("textCell", forIndexPath: indexPath) as? TextCellperformSegueWithIdentifier("openSettings")

使用R.swift,你不需要再写冒号“了,最关键的是:全部都有代码提示。

leticon= R.image.settingsIconletcell= tableView.dequeueReusableCellWithReuseIdentifier(R.reuseIdentifier.textCell, forIndexPath: indexPath)performSegueWithIdentifier(R.segue.openSettings)

如何安装R.swift

强烈建议使用CocoaPods


1.添加 'R.swift' 到你的pod file,然后pod install

补充:我第一次安装安装不上的话,添加“R.swift.library”,安装这个之后,再执行第一步

2.选择项目配置,点击左上角的小加号,添加一个New Run Script Phase

使用R.swift来解决iOS开发中以string作为参数的不安全方法_第1张图片

3.将新添加的Script的顺序拖动到compile Sources前面

这步非常重要!

使用R.swift来解决iOS开发中以string作为参数的不安全方法_第2张图片

拖动后顺序是这样

4.在run script中贴进下面的代码:"$PODS_ROOT/R.swift/rswift" "$SRCROOT"

5.build完成后,会在项目的根目录下发现R.generated.swift这个文件,将它添加进项目。

如果你真要作死手动添加的话

1.到这个路径下去下载最新的一个release,解压缩后将rswift添加进项目

4.在run script中贴进下面的代码:"$SRCROOT/rswift" "$SRCROOT"

其他步骤同上

作者录的操作视频

视频地址:https://vimeo.com/122888912

你可能感兴趣的:(使用R.swift来解决iOS开发中以string作为参数的不安全方法)