我试图在处理UIImage和Asset Catalog时使用Enums和一个connivence初始化器使我的代码更安全。我的代码如下。
import UIKit
extension UIImage {
enum AssetIdentifier: String {
case Search = "Search"
case Menu = "Menu"
}
convenience init(assetIdentifier: AssetIdentifier) {
self.init(named: AssetIdentifier.RawValue)
}
}
目前我收到此错误。
'Cannot invoke 'UIImage.init' with an argument of type '(named: RawValue.Type)'
2条答案
按热度按时间pprl5pva1#
存在2个问题:
1.初始化失败
在
convenience initializer
中,您调用的是failable initializer
。那么,当您依赖于failable initializer
(根据定义,failable initializer
不能保证总是创建UIImage
的示例)时,如何保证总是创建UIImage
的示例呢?您可以通过在调用failable init
时使用神奇的!
来解决这个问题。2.引用收到的参数
当您调用
self.init
时,您没有传递在init中接收到的参数。而是引用了枚举定义。若要解决此问题,请替换用这个
总结
这就是结果
测试
hgb9j2n62#
你可以用这个代码。我已经测试过了。