Cod*_*ver 10 image init ios swift swift2
在处理UIImage和资产目录时,我正在尝试使用Enums和connivence初始化程序使代码更安全.我的代码如下.
import UIKit
extension UIImage {
enum AssetIdentifier: String {
case Search = "Search"
case Menu = "Menu"
}
convenience init(assetIdentifier: AssetIdentifier) {
self.init(named: AssetIdentifier.RawValue)
}
}
Run Code Online (Sandbox Code Playgroud)
目前我收到此错误.
'Cannot invoke 'UIImage.init' with an argument of type '(named: RawValue.Type)'
Run Code Online (Sandbox Code Playgroud)
有两个问题:
在convenience initializer你的呼唤中failable initializer.那么如何保证UIImage在依赖于某个实例时始终创建实例failable initializer,根据定义,并不能保证?你可以通过!在调用时使用魔法来解决这个问题failable init.
当你打电话时,self.init你没有传递你的init中收到的参数.而是引用枚举定义.要解决此问题,请更换此项
self.init(named: AssetIdentifier.RawValue)
Run Code Online (Sandbox Code Playgroud)
有了这个
self.init(named: assetIdentifier.rawValue)
Run Code Online (Sandbox Code Playgroud)
这是结果
extension UIImage {
enum AssetIdentifier: String {
case Search = "Search"
case Menu = "Menu"
}
convenience init(assetIdentifier: AssetIdentifier) {
self.init(named: assetIdentifier.rawValue)!
}
}
Run Code Online (Sandbox Code Playgroud)
UIImage(assetIdentifier: .Search)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7105 次 |
| 最近记录: |