Swift:正在检查UIImage故障初始化
我想检查图像是否存在,但在可失败初始化中。。。我可以做得很难看,但我真的想知道Swift:正在检查UIImage故障初始化,swift,uiimage,Swift,Uiimage,我想检查图像是否存在,但在可失败初始化中。。。我可以做得很难看,但我真的想知道self==nil是否可行 extension UIImage { convenience init?(_ name:String) { let image = UIImage(named:name) guard image != nil else { Assert("image \(name) missing yo"); return nil } self.i
self==nil
是否可行
extension UIImage {
convenience init?(_ name:String) {
let image = UIImage(named:name)
guard image != nil else { Assert("image \(name) missing yo"); return nil }
self.init(named: name)
}
}
更干净,但不编译
extension UIImage {
convenience init?(_ name:String) {
self.init(named: name)
if self == nil { Assert("image \(name) missing yo") }
}
}
静态func没有init有趣
extension UIImage {
static func with(_ name:String) -> UIImage? {
let image = UIImage(named:name)
if image == nil { Assert("image \(name) missing yo") }
return image
}
}
提前感谢您抽出时间
**编辑**
也许我两者都需要
extension UIImage {
convenience init?(_ name:String) {
self.init(named:name)
}
}
extension Optional where Wrapped == UIImage {
init?(_ name:String) {
self.init(name)
if self == nil {
Assert("image \(name) missing yo")
}
}
}
我不能百分之百确定我是否正确回答了你的问题。但我想你想要这样的东西:(让我知道它是否有帮助或者为什么没有)
我不能百分之百确定我是否正确回答了你的问题。但我想你想要这样的东西:(让我知道它是否有帮助或者为什么没有)
您正在为
UIImage
编写扩展名,UIImage
不能为空,因为它不是可选的。它肯定可以是??如果您使用UIImage(名为:“某物不正确”),您将获得零返回它不能:如果您这样标记它:UIImage?
那么它可以是零。尝试在游乐场中将UIImage类型的变量设置为nil。它不会编译。var-image:UIImage?=nil
编译精细这就是我说的:那么你的变量“image”的类型是可选的而不是UIImage
你正在为UIImage
编写一个扩展,UIImage
不能为nil,因为它不是可选的。它肯定可以是??如果您使用UIImage(名为:“某物不正确”),您将获得零返回它不能:如果您这样标记它:UIImage?
那么它可以是零。尝试在游乐场中将UIImage类型的变量设置为nil。它不会编译。var-image:UIImage?=nil
编译fine这就是我说的:那么你的变量“image”是可选的类型,而不是UIImage
就是这样!谢谢,除了我想要self.init(命名:name)
?就这样!谢谢,除了我想要self.init(命名:name)
?
extension Optional where Wrapped == UIImage {
init?(_ name:String) {
self.init(name)
if self == nil {
Assert("image \(name) missing yo")
}
}
}