Элемент экземпляра 'decode' нельзя использовать для типа 'JSONDecoder';Вы имели в виду использовать значение этого типа вместо - PullRequest
0 голосов
/ 19 октября 2018

Я использую JSONDecoder для получения данных JSON из Wordpress 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 голосов
/ 19 октября 2018

Проблема, о которой сообщает ошибка компилятора, заключается в том, что вы пытаетесь вызвать метод экземпляра для типа вместо экземпляра этого типа.Вам нужно создать экземпляр JSONDecoder и вызвать decode для этого.

Как только вы исправите это, вы также столкнетесь с проблемой, что вам нужно передать метатип в метод, так что LatestArticleModel.self вместо LatestArticleModel.

let article = JSONDecoder().decode(LatestArticleModel.self, from: data)
0 голосов
/ 19 октября 2018

article должен быть объявлен как:

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

Если вы проверите decode(_:forKey:), вы увидите, что это метод экземпляра (не статический)Это означает, что вы должны вызывать его через экземпляр JSONDecoder.Кроме того, параметры type: T.Type (метатип ), что означает, что это должен быть self типа.

Кроме того: что такое T.Type в swift .

...