【问题标题】:Swift Codable with reserved word带有保留字的 Swift Codable
【发布时间】:2018-12-13 23:49:45
【问题描述】:

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

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

以前有没有人遇到过这种情况:

public struct PhoneNumber: Codable {

    var phoneNumber: String
    var extension: String
    var isPrimary: Bool
    var usageType: Int
}

此处不能使用关键字“扩展名”作为标识符

【问题讨论】:

  • 您可以使用反引号,如answer中所示
  • 感谢@chirag90 该解决方案完美运行。
  • 不客气@Bryan 你应该标记下面对你有用的答案之一。

标签: swift codable


【解决方案1】:

'return' 我也遇到过类似的问题。您可以使用 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
}

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

【讨论】:

  • @Bryan 这将是比反引号更好的方法
【解决方案2】:

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

var `extension`: String

【讨论】:

    猜你喜欢
    • 2018-11-15
    • 1970-01-01
    • 2017-01-21
    • 2018-09-07
    • 1970-01-01
    • 2018-05-23
    • 2018-06-11
    • 2018-07-09
    • 2023-03-07
    相关资源
    最近更新 更多