Swift 可使用保留字编码
Swift Codable with reserved word
我有一种情况,从 API 返回的 JSON 有一个名为 extension 的字段,它是 Swift 中的保留字。当我尝试使用它时,我的 Codable 爆炸了。
我已经搜索了两个小时,但似乎找不到任何解决方案。
有没有人运行以前参与过这个:
public struct PhoneNumber: Codable {
var phoneNumber: String
var extension: String
var isPrimary: Bool
var usageType: Int
}
关键字'extension'不能在此处用作标识符
只要给变量名加上反引号,让编译器认为它是一个变量,而不是关键字。
var `extension`: String
我在 '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
}
因为你不能调用 属性 'extension' 你给它起类似的名字但是使用 CodingKeys 告诉你对象 JSON 中的键是什么。
我有一种情况,从 API 返回的 JSON 有一个名为 extension 的字段,它是 Swift 中的保留字。当我尝试使用它时,我的 Codable 爆炸了。
我已经搜索了两个小时,但似乎找不到任何解决方案。
有没有人运行以前参与过这个:
public struct PhoneNumber: Codable {
var phoneNumber: String
var extension: String
var isPrimary: Bool
var usageType: Int
}
关键字'extension'不能在此处用作标识符
只要给变量名加上反引号,让编译器认为它是一个变量,而不是关键字。
var `extension`: String
我在 '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
}
因为你不能调用 属性 'extension' 你给它起类似的名字但是使用 CodingKeys 告诉你对象 JSON 中的键是什么。