如何检查响应编码值是否为空?

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 中没有字段“昵称”)。

你这样做的方式是用“?”。