// 安全的资源组织方式
// 这种通过字符串来获取指定资源的方式,是存在隐患的。在 OC 我们可以通过宏定义来缓解
// 在 Swift 中 可以使用 enum 类型来字符创, 然后通过资源类型添加合适的 extension 来让编译器来帮助我们在资源啊名称修改是能在代码做成对应的改变
// 简单的例子
enum ImageName: String{
case myImage = "my_image"
}
enum SegueName: String {
case mySegue = "my_segue"
}
extension UIImage {
convenience init!(imageName: ImageName){
self.init(named: imageName.rawValue)
}
}
extension UIViewController {
func performSegue(withName segueName: SegueName, sender: Any?){
performSegue(withIdentifier: segueName.rawValue, sender: sender)
}
}
let image = UIImage(imageName: .myImage)
UIViewController.init().performSegue(withName: .mySegue, sender: nil)
// 类似的框架有 R.swift, SwiftGen
/*
https://github.com/mac-cain13/R.swift
https://github.com/AliSoftware/SwiftGen
*/