如何检查响应编码值是否为空?
How to check response codable value is empty or not?
我是 swift 的新手,也可以编码。我有以下可编码。我在 "RecentResult" 中收到了 API 的所有回复。我想检查 "data" 是否为空。如何查看?
struct RecentResult: Codable
{
let input: Input
let commandResult: CommandResultClass
}
struct CommandResultClass: Codable {
let success: Int
let message: String
let data: DataClass
}
struct DataClass: Codable {
let recentCount: String
enum CodingKeys: String, CodingKey {
case recentCount = "RecentCount"
}
}
要解码,我正在使用这一行,但我不知道如何检查 "data" 是否为空。
let strResponseData = try JSONDecoder().decode(RecentResult.self, from: data!)
当你的数据中有类似可选的东西时的一般提示...
如果你有这个..
struct example: Decodable {
let name: String
let nickname: String
let tag: String
}
这三个必须存在,它们不能是“nil”,它们不能在 JSON.
中不存在
因此,如果“昵称”根本不在 json 中,它就不会解析。
另一方面。如果您这样做,请注意问号:
struct example: Decodable {
let name: String
let nickname: String?
let tag: String
}
那么.nickname
字段实际上可以是nil
那么,你可以这样说
if blah.nickname == nil { print("no nickname in the json!") }
您的问题“如何检查字段 XYZ 是否为空”的字面答案是“如果 strResponseData.xyz == nil”...
但是你必须向解析器表明在 json 中它可能是 nil(即 json 看起来像这样...... "nickname":nil )或者它是json 中完全没有(json 中没有字段“昵称”)。
你这样做的方式是用“?”。
我是 swift 的新手,也可以编码。我有以下可编码。我在 "RecentResult" 中收到了 API 的所有回复。我想检查 "data" 是否为空。如何查看?
struct RecentResult: Codable
{
let input: Input
let commandResult: CommandResultClass
}
struct CommandResultClass: Codable {
let success: Int
let message: String
let data: DataClass
}
struct DataClass: Codable {
let recentCount: String
enum CodingKeys: String, CodingKey {
case recentCount = "RecentCount"
}
}
要解码,我正在使用这一行,但我不知道如何检查 "data" 是否为空。
let strResponseData = try JSONDecoder().decode(RecentResult.self, from: data!)
当你的数据中有类似可选的东西时的一般提示...
如果你有这个..
struct example: Decodable {
let name: String
let nickname: String
let tag: String
}
这三个必须存在,它们不能是“nil”,它们不能在 JSON.
中不存在因此,如果“昵称”根本不在 json 中,它就不会解析。
另一方面。如果您这样做,请注意问号:
struct example: Decodable {
let name: String
let nickname: String?
let tag: String
}
那么.nickname
字段实际上可以是nil
那么,你可以这样说
if blah.nickname == nil { print("no nickname in the json!") }
您的问题“如何检查字段 XYZ 是否为空”的字面答案是“如果 strResponseData.xyz == nil”...
但是你必须向解析器表明在 json 中它可能是 nil(即 json 看起来像这样...... "nickname":nil )或者它是json 中完全没有(json 中没有字段“昵称”)。
你这样做的方式是用“?”。