实例成员'decode'不能用于'JSONDecoder'类型;您是不是要使用此类型的值

时间:2018-10-19 08:57:17

标签: ios swift jsondecoder

我实现JSONDecoder以从Wordpress json获取JSON数据 我的结构在另一个快速文件中,我得到这个错误,这是我的代码。在让文章上出现错误

URLSession.shared.dataTask(with: url!){ (data,response ,err) in
        guard let data = data else{return}
        let article = JSONDecoder.decode(LatestArticleModel , from: data)

    }.resume()

LatestArticleModel.swift

struct LatestArticleModel : Decodable {

    var id: Int
    var date: String
    var link: String
    var title_rendered :String
    var author: Int
    var category: Int
    var img_link: String
    var content_rendered: String
    var exerpt_rendered: String


}

2 个答案:

答案 0 :(得分:2)

LoginScreen.showError() is not a function 应该声明为:

article

如果您选中decode(_:forKey:),则会看到它是一个实例方法(不是静态方法),这意味着您应该通过let decoder = JSONDecoder() let article = decoder.decode(LatestArticleModel.self , from: data) 的实例来调用它。另外,JSONDecoder参数是 T.Type 元类型),这意味着它应该是该类型的type

此外:what is T.Type in swift

答案 1 :(得分:2)

编译器错误告诉您的问题是,您试图在某个类型而不是该类型的实例上调用实例方法。您需要创建JSONDecoder的实例,并在其上调用decode

修复后,还会遇到需要将元类型传递给方法的问题,因此LatestArticleModel.self而不是LatestArticleModel

let article = JSONDecoder().decode(LatestArticleModel.self, from: data)