JSON请求未返回数据

JSON请求未返回数据,json,swift,Json,Swift,我正在尝试创建一个天气应用程序。我遵循了一个关于JSON和Swift 4 Decodable的教程,我遵循了这个教程,它成功了。问题是,当我试图将自己的URL放入请求时,它将不起作用。 这是我的代码: class MainVC: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout { let jsonUrlString: Str

我正在尝试创建一个天气应用程序。我遵循了一个关于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.}

Error Domain=NSCocoaErrorDomain code=4864“预计要解码数组?我只需要日常部分中的一些东西,但对我来说它似乎是数组中的数组。

看起来您的天气结构构建不正确。它应该是这样的:

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
}

我遗漏了很多项目,但这应该可以帮助您开始。

您可以记录错误并共享这些错误吗?(
err
在数据任务响应块中,您现在忽略的错误在catch块中)我没有收到任何错误:\n如果您没有收到任何错误,那么当您打印天气预报时会打印什么?您不需要使用实际的APIKEY更新url中的“APIKEY”吗?例如:private let APIKEY=“您的api key here”。然后:let jsonUrlString:String=”“@silicon_valley nothing is printed,我想Json中有一些东西,我现在应该只需要Json请求中的一些东西(day和temp),也许这就是问题所在?谢谢,我有一些完全一样的东西,但仍然不起作用。好吧,我明天会再次测试并尝试修复它。当然会更新。再次感谢!请您添加您的代码,否则我们无法帮助。。。问题在于JSON反序列化,所以这是我们需要查看的代码,以了解它的错误。抱歉,我花了这么长时间回答,这就是问题所在,我确实只有一个结构,所以我猜它只从JSON中获取了第一项。无论如何,再次谢谢你!