Swift中从闭包内调用异步共享实例方法的语法



我在从闭包中调用共享实例方法时遇到语法问题:

这是我的代码:

func getContactImage (contact:Contacts, completion:@escaping (_ myimage: UIImage)->()){//open 1 method
var animg = UIImage(named:"default.png")!
let surl = "https://~/contactimage.png"
Utilities.shared.downloadImage(surl: surl as NSString, completion: image as UIImage ->Void in animg = img) 
completion(animg)
}

Utilities.shared.downloadImage行给出了几个错误,包括:

无法在强制中将"UIAccessibilityTraits"类型(也称为"UInt64"(的值转换为"UIImage"类型

共享实例方法如下所示:

@objc func downloadImage(surl: NSString, completion : @escaping (UIImage) -> Void ) {
//download image
}

从闭包中调用共享实例方法的正确语法是什么?

使用

Utilities.shared.downloadImage(surl) {  (img) in
// use img here
}

同时更改功能

@objc func downloadImage(_ surl: String, completion : @escaping (UIImage) -> Void ) { }

func getContactImage (contact:Contacts, completion:@escaping (_ myimage: UIImage)->()){//open 1 method
var animg = UIImage(named:"default.png")!
let surl = "https://~/contactimage.png"
Utilities.shared.downloadImage(surl) { (img) in 
completion(img)
}
}

BTW鼓励使用SDWebImage

最新更新