【问题标题】:Swift Asynchronous loading errorSwift异步加载错误
【发布时间】:2019-01-10 20:07:18
【问题描述】:

我一直在尝试将异步加载添加到我一直在从事的项目中。我一直在处理另一个 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”;您的意思是改用这种类型的值吗?

我是 swift 新手。在我看来,它根本没有阅读扩展名。如果不调用该方法,代码本身就可以正确构建。

扩展位于我的导入语句的正下方,因为当我将它放在类中时,我收到了错误

声明仅在文件范围内有效

【问题讨论】:

标签: ios swift asynchronous swift3 uiimageview


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 2015-09-10
    • 2011-11-27
    • 2014-03-11
    • 2019-03-29
    相关资源
    最近更新 更多