【发布时间】:2020-03-01 17:58:16
【问题描述】:
我正在使用 Aplhadvantage API。它的结构是:
{
"Global Quote": {
"01. symbol": "MSFT",
"02. open": "152.4100",
"03. high": "163.7100",
"04. low": "152.0000",
"05. price": "162.0100",
"06. volume": "96388312",
"07. latest trading day": "2020-02-28",
"08. previous close": "158.1800",
"09. change": "3.8300",
"10. change percent": "2.4213%"
}
}
我已经创建了我的结构:
import Foundation
struct StockResponse: Decodable{
var response: Stocks
}
struct Stocks: Decodable{
var stocks: [StockInfo]
}
struct StockInfo: Decodable{
var open: String
var high: String
var low: String
var close: String
var volume: String
}
我的解码器是:
func getStock (completion: @escaping(Result<[StockInfo], StockError>) -> Void) {
let dataTask = URLSession.shared.dataTask(with: resourceURL) { data, _,_ in
guard let jsonData = data else{
completion(.failure(.noDataAvailable))
return
}
do{
let decoder = JSONDecoder()
let stocksResponse = try decoder.decode(StockResponse.self, from: jsonData)
let stockDetails = stocksResponse.response.stocks
completion(.success(stockDetails))
}
catch{
completion(.failure(.canNotProcessData))
}
}
dataTask.resume()
}
每次运行代码时,都会收到 canNotProcessData 错误。所以程序成功获取数据,但无法处理。我将如何解决这个问题?
【问题讨论】:
-
打印 catch 块中的错误。它准确地告诉你哪里出了问题。像通用
canNotProcessData这样的东西是毫无意义的。