带有保留字的 Swift Codable

Bry*_*mer 6 swift codable

我有一种情况,从 API 返回的 JSON 有一个名为 extension 的字段,它是 Swift 中的保留字。当我尝试使用它时,我的编码器爆炸了。

我已经搜索了过去两个小时,但似乎找不到任何解决方案。

有没有人遇到过这个:

public struct PhoneNumber: Codable {

    var phoneNumber: String
    var extension: String
    var isPrimary: Bool
    var usageType: Int
}
Run Code Online (Sandbox Code Playgroud)

关键字“extension”不能用作此处的标识符

Sta*_*yer 12

我在“返回”方面遇到了类似的问题。您可以使用 CodingKeys。

public struct PhoneNumber: Codable {
    enum CodingKeys: String, CodingKey {
        case phoneNumber
        case extensionString = "extension"
        case isPrimary
        case usageType
    }

  var phoneNumber: String
  var extensionString: String
  var isPrimiry: Bool
  var usageType: Int
}
Run Code Online (Sandbox Code Playgroud)

由于您不能调用属性“扩展”,因此您将其命名为类似的名称,但使用 CodingKeys 来告诉您对象 JSON 中的键是什么。


pap*_*111 11

只需在变量名中添加反引号,让编译器认为它是一个变量,而不是关键字。

var `extension`: String
Run Code Online (Sandbox Code Playgroud)