我正在尝试向后端提出一个简单的登录请求。仅当登录成功时,后端才会返回由状态码,每次字符串消息和访问令牌组成的JSON对象。为此,我创建了以下struct
:
struct AuthResponse: Decodable {
enum CodingKeys: String, CodingKey {
case code, message
case accessToken = "access_token"
}
let code: Int, message: String, accessToken: String?
}
[如果登录失败,并且服务器未发送访问令牌,则AuthResponse
对象设法正确解码,并为nil
属性设置为accessToken
,正如我期望的那样。例如,对于以下响应,解码成功:
代码= 400;message =“用户未注册”;
但是对于带有访问令牌的响应,像这样:
“ access_token” = TheAccessToken;代码= 200;消息=“成功登录”;
AuthResponse
对象不会失败。
为什么会这样?这与accessToken
属性是可选属性有关吗?我也尝试覆盖解码初始化程序并实现decodeIfPresent(_:forKey:)
并展开属性,但两者似乎都没有帮助。预先感谢。