Swift:基石库——R.swift
这是我参与更文挑战的第4天,活动详情查看: 更文挑战
何为基石库?
做一个App无外乎两大要素:
获取数据
通过数据驱动页面
也许你的App没有网络请求或者网络请求少,你可以不需要Alamofire。
也许你的App的UI不是特别复杂,简单的xib和storyboard就可以胜任。
但是在当下一个App中,图片资源、字符串资源等,作为一个App开发者,你是不得不用的。
举个栗子,传统的获取一个image资源我们都是这么写:
let image = UImage(named: "saber")
这么写的最大弊端就是saber
这是一个字符串硬编码,靠的的是纯手工敲打,一旦出错,界面就会出现异常。
在开发中,需要尽量避免这种硬编码,如何高效将这种硬编码的表达方式更换为高效安全的方式,就由本次的主角出场了--R.swift。
统和所有的资源,以现代化的方式引用资源,项目中使用它,虽然不会让你的App上升一个层次,不过却给你的编码极度舒适。
let image = R.image.saber()
同样是Ex咖喱棒,味道却完全不同,哈哈。
基石库就是那些你无法避免不得不用的库,而R.swift恰恰就是。
R.swift
何为R,即Resource的缩写,我们先看看官方给出的一些例子:
使用R.swift函数前:
let icon = UIImage(named: "settings-icon")
let font = UIFont(name: "San Francisco", size: 42)
let color = UIColor(named: "indicator highlight")
let viewController = CustomViewController(nibName: "CustomView", bundle: nil)
let string = String(format: NSLocalizedString("welcome.withName", comment: ""), locale: NSLocale.current, "Arthur Dent")
使用R.swift函数后:
let icon = R.image.settingsIcon()
let font = R.font.sanFrancisco(size: 42)
let color = R.color.indicatorHighlight()
let viewController = CustomViewController(nib: R.nib.customView)
let string = R.string.localizable.welcomeWithName("Arthur Dent")
所有的资源都函数化后,编写过程想出错都难,特别需要注意的是最后一个涉及国际化的函数R.string.localizable.welcomeWithName("Arthur Dent")
,Arthur Dent这个字符串需要自己具体制定,可以通过在做国际化时,通过info.strings进行处理。
R.swift目前支持下面这些资源文件管理:
- Images
- Fonts
- Resource files
- Colors
- Localized strings
- Storyboards
- Segues
- Nibs
- Reusable cells
基本上覆盖了绝大多数的App中的资源管理。
安装和使用
安装
R.swift使用其他特别舒服,不过它的安装确实比其他的第三方库稍微麻烦一点,正所谓工欲善其事必先利其器
,这一点麻烦是值得的。
1.添加'R.swift' 在工程的Podfile文件中,并运行pod install。 2.如下图所示。添加脚本:
3.如下图所示,移动脚本的位置,让它在Compile Sources phase和Check Pods Manifest.lock之间:
4.添加脚本:
在shell,下面这一栏添加"$PODS_ROOT/R.swift/rswift" generate "$SRCROOT/R.generated.swift"
在input Files通过+号添加$TEMP_DIR/rswift-lastrun
在Output Files通过+号添加$SRCROOT/R.generated.swift
5.运行添加R.generated.swift:
完成第4步后,进行command + B编译,然后在工程的根目录下面会找到R.generated.swift文件:
将这个文件拖入到工程中,并且不要勾选Copy items if needed
这样,R.swift就安装完成啦。
使用
每一次添加了新的资源文件,就运行一次command + B一次,这样R.generated.swift文件就将新加入的资源文件更新,使用使用的时候只用通过R.来进行引用了。
更多用法,参考上面写的例子,以及官方文档
明天周末怎么破?
最怕周末更文,因为作为一个奶爸,休息都不是自己的,我争取做到不水文,至少讲一些知识点,明日继续,大家加油。