【发布时间】:2023-03-24 18:40:01
【问题描述】:
我正在进行 API 调用并管理接收到的数据,但我的调用遇到了错误。这是我的 getData() 代码:
func getData(from url: String) {
URLSession.shared.dataTask(with: URL(string: url)!, completionHandler: { data, response, error in
guard let data = data, error == nil else {
print("something went wrong.")
return
}
do {
self.instructionsResults = try JSONDecoder().decode([Step].self, from: data)
print("getData() was successful!")
print(self.instructionsResults)
} catch {
print("Decoding error:")
print(String(describing: error)) // <-- this pings
}
}).resume()
}
这是一个示例 url json 数据的 pastebin:link
这是我为此提取定义的结构:
struct Step: Codable {
let number: Int
let step: String?
}
这可能是额外的,但我使用上面的调用来填充实例化为 var steps: [String] = [] 的数组,其中包含步骤:JSON 步骤数组中每个步骤的字符串数据。
for n: Int in 0 ..< instructionsResults.count {
if instructionsResults[n].step != nil {
let step = instructionsResults[n].step ?? "n/a"
print("step: \(instructionsResults[n].step)")
print("step: \(step)")
steps.append(step)
}
}
print("Steps: \(steps)")
}
有人对出了什么问题有任何见解吗?我的最终打印语句总是返回为空。我在这个项目的早期以类似的方式进行了类似类型的调用,并且效果很好,所以我很难理解我在哪里出错了。任何见解/反馈将不胜感激,谢谢。
编辑:这是错误代码:
Steps: []
Decoding error:
keyNotFound(CodingKeys(stringValue: "number", intValue: nil), Swift.DecodingError.Context(codingPath: [_JSONKey(stringValue: "Index 0", intValue: 0)], debugDescription: "No value associated with key CodingKeys(stringValue: \"number\", intValue: nil) (\"number\").", underlyingError: nil))
【问题讨论】: