【发布时间】:2017-12-07 22:33:26
【问题描述】:
我一直在尝试使用以下代码来获取我的 JSON 数据。它返回“加载后错误”。我在另一个应用程序中使用这个 JSON 数据,它可以工作。我正在尝试使用 Swift 4 实现新的简化方法。代码确实可以工作到打印语句“下载”的位置。
class MortgageRatesVC: UIViewController {
final let url = URL (string:"http://mortgous.com/JSON/currentRatesJSON.php")
override func viewDidLoad() {
super.viewDidLoad()
downloadJason()
}
func downloadJason () {
guard let downloadURL = url else { return }
URLSession.shared.dataTask(with: downloadURL) { data, urlResponse, error in
guard let data = data, error == nil, urlResponse != nil else {
print("Oops Call for Help")
return
}
print("downloaded")
do
{
let decoder = JSONDecoder()
let rates = try decoder.decode([LenederRates].self, from: data)
print(rates)
} catch {
print("Error after loading")
}
}.resume()
}
}
类
class LenederRates: Codable {
let key : String
let financial_institution : String
let variable_rate : String
let six_months : String
let one_year : String
let two_year : String
let three_year : String
let four_year : String
let five_year : String
// let date : Date
init(key: String, financial_institution: String, variable_rate: String, six_months: String, one_year: String, two_year: String, three_year: String, four_year: String, five_year: String) {
self.key = key
self.financial_institution = financial_institution
self.variable_rate = variable_rate
self.six_months = six_months
self.one_year = one_year
self.two_year = two_year
self.three_year = three_year
self.four_year = four_year
self.five_year = five_year
}
}
【问题讨论】:
-
你得到的完整错误是什么?
-
它没有给我一个快速的错误。它只是在我的代码打印错误处停止(“加载后出错”)。我认为它无法读取 JSON!
-
将
print(error)添加到您的catch分支以检查您遇到的实际错误。 -
感谢您的回复。我收到错误,无法读取 json 数据中“键”和金融机构值的数据。
-
需要将解码器dateDecodingStrategy设置为
.formatted,并传递一个固定格式的dateFormatter