Swift异步加载错误

时间:2018-08-03 01:02:52

标签: ios swift asynchronous swift3 uiimageview

我一直在尝试将异步加载添加到我正在从事的项目中。我一直在处理另一个StackOverFlow问题中的一些代码。

我添加了以下扩展名

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)

我收到以下错误消息

  

实例成员'imageFromServerURL'不能用于'UIImageView'类型;您是不是要使用这种类型的值?

我是新手。在我看来,它根本没有阅读扩展程序。无需调用该方法,代码本身即可正确构建。

该扩展名位于导入语句的正下方,就像我将其放入类中时一样

  

声明仅在文件范围内有效

2 个答案:

答案 0 :(得分:3)

这是一个实例方法,而不是类。您必须首先创建类型UIImageView的实例,然后调用该方法。示例:

let imageView = UIImageView() imageView.imageFromServerURL("http://image.tmdb.org/t/p/w185/"+posterImageFilename)

答案 1 :(得分:-1)

您是否在项目列表中添加了“应用程序传输安全设置”和“允许任意加载”?

enter image description here

您的代码在我的测试项目上运行良好。所以,我想也许您忘记了这一点。