我正在尝试创建一个天气应用程序。我遵循了有关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?我只需要“每日”部分中的一些内容,但对我来说,这似乎是一个数组中的一个数组。
答案 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
}
我遗漏了很多东西,但这应该可以帮助您入门。