带保留字的Swift Codable

t3irkdon  于 2024-01-05  发布在  Swift
关注(0)|答案(2)|浏览(191)

我遇到过这样的情况,从API返回的JSON有一个名为extension的字段,这是Swift中的保留字。
我已经找了两个小时了,但我似乎找不到任何解决办法。
以前有没有人遇到过这种情况:

  1. public struct PhoneNumber: Codable {
  2. var phoneNumber: String
  3. var extension: String
  4. var isPrimary: Bool
  5. var usageType: Int
  6. }

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

0mkxixxg

0mkxixxg1#

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

  1. var `extension`: String

字符串

yws3nbqq

yws3nbqq2#

我也遇到过类似的“返回”问题。你可以用CodingKeys解决。

  1. public struct PhoneNumber: Codable {
  2. enum CodingKeys: String, CodingKey {
  3. case phoneNumber
  4. case extensionString = "extension"
  5. case isPrimary
  6. case usageType
  7. }
  8. var phoneNumber: String
  9. var extensionString: String
  10. var isPrimiry: Bool
  11. var usageType: Int
  12. }

字符串
因为你不能把一个属性叫做“extension”,所以你可以用类似的名字来命名它,但是使用CodingKeys来告诉你对象JSON中的键是什么。

展开查看全部

相关问题