【发布时间】:2021-06-20 22:58:58
【问题描述】:
错误:- 解码时出错 typeMismatch(Swift.Array,Swift.DecodingError.Context(codingPath: [], debugDescription: "预期解码 Array 但发现了 dictionary。", underlyingError: nil))
#Fetch 函数
static func fetchEmployeeDetail(id:Int, apiURL: String, completion: @escaping(Result<[Users], Error>) -> Void) {
print(id,apiURL)
let resourceString = "\(stringURL)\(id)\(apiURL)"
print(resourceString)
guard let resourceURL = URL(string: resourceString) else {fatalError()}
let dataTask = URLSession.shared.dataTask(with: resourceURL) {data, _, _ in
guard let jsonData = data else {
print(errno)
return
}
do {
let userResponse = try JSONDecoder().decode([Users].self, from: jsonData)
completion(.success(userResponse))
print(userResponse)
}catch{
print("Error while decoding \(error)")
if let data = data, let dataString = String(data: data, encoding: .utf8){
print(dataString)
}
}
}
dataTask.resume()
}
#模型
struct Users: Codable {
var id: Int
var sr_no: Int
var first_name: String
var last_name: String
var email: String
init(id: Int, sr_no:Int, first_name: String, las_name: String, email: String) {
self.id = id
self.sr_no = sr_no
self.first_name = first_name
self.last_name = las_name
self.email = email
}
}
印刷
2 / http://192.168.27.165:8000/employees/2/ 解码时出错 typeMismatch(Swift.Array, Swift.DecodingError.Context(codingPath: [], debugDescription: "期望解码 Array 但找到了一个字典。",underlyingError: nil)) {"id":2,"sr_no":2,"first_name":"Karan","last_name":"Sach Deva","email":"karan@gftpl.in"}
【问题讨论】:
-
decode([Users].self=>decode(Users.self?问:你当初为什么写[User]?这对你意味着什么?在这里,您要询问一名员工的详细信息,不是吗?还需要修改完成返回类型的其余部分等。
标签: ios swift api urlsession encoder-decoder