为什么不建议直接写如下代码?

UIImage.init(named: "logo")

你可能觉得,我为啥要修改图片名称呢?

1.项目初期,图片名称是UI命名,有很多不规范,程序员没有修改
2.随着项目的功能的增加,图片资源数量增加,需要对命名统一规范

参考了Android的资源名管理方式

/// R 是Resource的缩写
enum R {
    
    /// 服务模块
    enum Service: String {
        /// 电话
        case market_call = "market_call"
        /// 如果不写value的话,默认 rawValue == "market_add"
        case market_add
    }
    
    /// 商品详情模块
    enum ShopDetail: String {
        case log = "log"
    }
}

// 使用
UIImage.init(named: R.Service.market_call.rawValue)

如果想要写法更精简,省略.rawValue,实现如下写法

UIImage.init(R.Service.market_add)

需要给UIImage添加扩展

extension UIImage {

    convenience init?(_ name: R.Service) {
        self.init(named: name.rawValue)
    }
    
    convenience init?(_ name: R.ShopDetail) {
        self.init(named: name.rawValue)
    }
    // 其他模块
    ...
}