Swift异步加载错误
Swift Asynchronous loading error
我一直在尝试将异步加载添加到我一直从事的项目中。我一直在处理另一个 Whosebug 问题中的一些代码。
我添加了关注扩展
extension UIImageView {
public func imageFromServerURL(urlString: String, defaultImage : String?) {
if let di = defaultImage {
self.image = UIImage(named: di)
}
URLSession.shared.dataTask(with: NSURL(string: urlString)! as URL, completionHandler: { (data, response, error) -> Void in
if error != nil {
print(error ?? "error")
return
}
DispatchQueue.main.async(execute: { () -> Void in
let image = UIImage(data: data!)
self.image = image
})
}).resume()
}
}
我正在尝试这样调用方法
posterImageURL = UIImageView.imageFromServerURL("http://image.tmdb.org/t/p/w185/" + posterImageFilename)
我返回以下错误
Instance member 'imageFromServerURL' cannot be used on type 'UIImageView'; did you mean to use a value of this type instead?
我是 swift 的新手。在我看来,它根本没有阅读扩展名。如果不调用该方法,代码本身会正确构建。
扩展位于我的导入语句的正下方,当我把它放在 class 中时,我收到了错误
Declaration is only valid at file scope
这是一个实例方法,而不是 class。您必须先创建类型 UIImageView
的实例,然后再调用该方法。示例:
let imageView = UIImageView()
imageView.imageFromServerURL("http://image.tmdb.org/t/p/w185/"+posterImageFilename)
我一直在尝试将异步加载添加到我一直从事的项目中。我一直在处理另一个 Whosebug 问题中的一些代码。
我添加了关注扩展
extension UIImageView {
public func imageFromServerURL(urlString: String, defaultImage : String?) {
if let di = defaultImage {
self.image = UIImage(named: di)
}
URLSession.shared.dataTask(with: NSURL(string: urlString)! as URL, completionHandler: { (data, response, error) -> Void in
if error != nil {
print(error ?? "error")
return
}
DispatchQueue.main.async(execute: { () -> Void in
let image = UIImage(data: data!)
self.image = image
})
}).resume()
}
}
我正在尝试这样调用方法
posterImageURL = UIImageView.imageFromServerURL("http://image.tmdb.org/t/p/w185/" + posterImageFilename)
我返回以下错误
Instance member 'imageFromServerURL' cannot be used on type 'UIImageView'; did you mean to use a value of this type instead?
我是 swift 的新手。在我看来,它根本没有阅读扩展名。如果不调用该方法,代码本身会正确构建。
扩展位于我的导入语句的正下方,当我把它放在 class 中时,我收到了错误
Declaration is only valid at file scope
这是一个实例方法,而不是 class。您必须先创建类型 UIImageView
的实例,然后再调用该方法。示例:
let imageView = UIImageView()
imageView.imageFromServerURL("http://image.tmdb.org/t/p/w185/"+posterImageFilename)