Как исправить ошибку: «Ожидается расшифровка словаря»но нашел вместо этого массив "в этом коде? - PullRequest
0 голосов
/ 22 января 2019
import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    //API Key: 5ca10b2d20a545099a108a3aeceb329c
    //url: https://newsapi.org/v2/top-headlines?country=us&apiKey=5ca10b2d20a545099a108a3aeceb329c


    // model

    struct Source: Decodable {
        var id: String
        var name: String
    }

    struct Articles: Decodable {
        var source: Source
        var author: String
        var title: String
        var description: String
        var url: String
        var urlToImage: String
        var publishedAt: String
        var content: String

    }

    struct JSONDescription: Decodable {
        var status: String
        var totalResults: Int
        var articles: Articles
    }


    guard let url = URL(string: "https://newsapi.org/v2/top-headlines?country=us&apiKey=5ca10b2d20a545099a108a3aeceb329c") else { return }


    URLSession.shared.dataTask(with: url) { data, response, error in

        guard let data = data else { return }

        //let dataAsString = String(data: data, encoding: .utf8)
//            print(dataAsString)

        do {
        let jsonDescription = try JSONDecoder().decode(JSONDescription.self, from: data)
            print(jsonDescription.totalResults)
        }
        catch let jsonError {
            print("Json Error:", jsonError)
        }
}.resume()
}
}

То, что я ожидал увидеть, было данными JSON, возвращенными сюда: https://newsapi.org/v2/top-headlines?country=us&apiKey=5ca10b2d20a545099a108a3aeceb329c

Вы можете поместить их в этот форматер, чтобы сделать их читабельными: https://jsonformatter.curiousconcept.com

Я думалЯ все сделал правильно.Я неправильно построил свою модель?Я не уверен, как исправить эту ошибку.

1 Ответ

0 голосов
/ 22 января 2019

Итак, с помощью возвращенной ошибки и, глядя на данные, кажется, что «статьи» - это массив.

Вот что я бы попробовал:

  • Переименуйте структуру Articles в Article
  • Измените свойство articles JSONDescription с Articles на [Article]

Я не заметил никаких других ошибок всопоставление данных, но, надеюсь, это приблизит вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...