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)