【发布时间】:2020-09-01 11:10:33
【问题描述】:
当我尝试调用 .decode() 来解码结构时,它返回 nil。有人可以帮帮我吗?
我的应用从 JSON 数据返回空值,来自这行代码:
let newPosData = try JSONDecoder().decode(NewPosDataBase.self, from: responseData)
这里是完整的代码:
func getNewLFNREXT(invnr: String, completionHandler: @escaping (String, Bool, NewPosDataBase?) -> Void) {
let headers: HTTPHeaders = [
.authorization(username: UserCredentials.shared.username, password: UserCredentials.shared.password),
.accept("application/json")
]
let url:String = Config.middleware + Config.url + "/mobile/lfnrext?invnr=\(invnr)"
AF.request(url, method: .get, parameters: [:], headers: headers).responseJSON { response in
if response.response?.statusCode == 200 {
do {
guard let responseData = response.data else {
completionHandler(errorMessage, false, nil )
return
}
let newPosData = try JSONDecoder().decode(NewPosDataBase.self, from: responseData)
print( newPosData.newPosData?.newLfnrext)
completionHandler("", true, newPosData)
} catch {
completionHandler(errorMessage, false , nil )
}
}else {
let message = self.getErrorMessageFrom(data: response.data, defaultErrorMessage: errorKeineDaten)
completionHandler(message, false, nil)
}
}
}
【问题讨论】:
-
您可能有错误。在 catch 块中添加
print(error)。 -
@pawello2222 根本不进入catch块,返回成功但是nil
-
您的模型中到处都有可选变量。这样你就不会有任何错误。尝试删除它们。
-
您需要edit您的问题以包含您收到并尝试解码的json响应。
-
你自己解析 JSON 的时候为什么还要使用
responseJSON?理想情况下,停止使用 Alamofire 框架。它并没有真正带来任何有用的东西。