JSON请求未返回数据

时间:2018-11-25 16:41:45

标签: json swift

我正在尝试创建一个天气应用程序。我遵循了有关JSON和Swift 4 Decodable的教程,遵循了该教程,它确实有效。问题是,当我尝试输入自己的URL进行请求时,它将无法正常工作。 这是我的代码:

func observeQuery<T>(someObject: T) {
    if someObject is Profile {
        //do something
    } else if someObject is FavouriteList {
        //do something
    }
}

错误日志:

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()
    }
}

如何解析此https://darksky.net/dev/docs#forecast-request?我只需要“每日”部分中的一些内容,但对我来说,这似乎是一个数组中的一个数组。

1 个答案:

答案 0 :(得分:1)

您的Weather结构似乎构建不正确。它应该看起来像这样:

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
}

我遗漏了很多东西,但这应该可以帮助您入门。