JSON-запрос не возвращает данные - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь создать приложение погоды.Я следовал учебнику по JSON и Swift 4 Decodable, я следовал учебнику, и он работал.Проблема в том, что когда я пытаюсь указать собственный URL для запроса, он не работает.Это мой код:

class MainVC: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
    let jsonUrlString: String = "https://api.darksky.net/forecast/APIKEY/37.8267,-122.4233"

    private func getForecast(){
        guard let url = URL(string: jsonUrlString) else { return }
        URLSession.shared.dataTask(with: url) { (data, response, err) in
            guard let data = data else { return }
            do{
                let weatherForecast = try JSONDecoder().decode(Weather.self, from: data)
                print(weatherForecast)
            }catch _ as NSError{

            }
            }.resume()
    }
}

Журнал ошибок:

Error Domain=NSCocoaErrorDomain Code=4864 "Expected to decode Array<Any> but found a dictionary instead." UserInfo={NSCodingPath=(
), NSDebugDescription=Expected to decode Array<Any> but found a dictionary instead.}

Как я могу разобрать это https://darksky.net/dev/docs#forecast-request?Мне нужны только некоторые вещи из разделов Daily, но мне кажется, что это массив внутри массива.

1 Ответ

0 голосов
/ 25 ноября 2018

Похоже, ваша структура погоды построена неправильно.Это должно выглядеть примерно так:

struct DataItem: Codable {
    var summary: String
    var uvIndex: Int    
}

struct Info: Codable {
    var summary: String
    var icon: String
    var data: [DataItem]
}

struct Weather: Codable {
    var daily: Info
    var hourly: Info
    var timezone: String
}

Я оставил довольно много вещей, но это должно помочь вам начать.

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