Swift Codable с зарезервированным словом - PullRequest
0 голосов
/ 05 июля 2018

У меня есть ситуация, когда JSON, возвращаемый из API, имеет поле с именем extension, которое является зарезервированным словом в Swift. Моя кодировка взрывается, когда я пытаюсь ее использовать.

Я искал последние два часа, но, похоже, не могу найти никакого решения.

Кто-нибудь сталкивался с этим раньше:

public struct PhoneNumber: Codable {

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

Ключевое слово «extension» здесь нельзя использовать в качестве идентификатора.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

У меня были похожие проблемы с возвратом. Вы можете обойтись с 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.

0 голосов
/ 05 июля 2018

Просто добавьте обратные пометки к имени переменной, чтобы компилятор подумал, что это переменная, а не ключевое слово.

var `extension`: String
...