【问题标题】:URLSession POST request with json "_id" element with codable class in Swift带有json“_id”元素的URLSession POST请求和Swift中的可编码类
【发布时间】:2020-03-01 20:53:13
【问题描述】:

我正在尝试使用 URLSessions 来获取和发布数据。我在 Swift 上获取请求没有问题,只需发布​​即可。 I followed this 我有一个如下所示的可编码类:

class Item: Codable {
  var _id: String?
  var name: String = ""
  var color: String = ""
  var rating: Int = 0

  init(name: String, color: String, rating: Int){
        self.name = name
        self.color = color
        self.rating = rating
  }

}

还有看起来像这样的json数据:

[ {
   "_id" : "5e50a10c4ea5d87f0001c9da",
   "name" : "Pepper",
   "color" : "blue",
   "rating" : 4
  },
  {
   "_id" : "5e50a10c4ea5d87f0001c9db",
   "name" : "Pepper",
   "color" : "blue",
   "rating" : 2
  },
  {
   "_id" : "5e50a10c4ea5d87f0001c9dc",
   "name" : "Pepper"
   "color" : "blue"
   "rating" : 6
  }
]

我目前正在为我的数据库使用 restdb.io,并且已经使用 Postman 测试了我对所有 Get、Post、Put 等的请求。 在 Postman 上,当我使用 Json 正文创建一个仅包含名称、颜色和评级元素的 POST 请求时,它将生成一个唯一的 _id,而无需我指定。

当我在 Swift 上执行此操作并使用 init() 方法发送带有 Item 对象的发布请求时,我将 _id 作为类中的可选项,我的代码崩溃并显示“意外发现 nil,同时隐式解包 Optional 值”。我该如何解决这个问题?

【问题讨论】:

  • 如果不查看您的代码,我猜您的 JSON 数据对于您的其他字段之一(名称、颜色或评级)的值为 nil。使用 Postman 查看您的回复,以确保所有必填字段都存在。

标签: swift decodable urlsession


【解决方案1】:

如果您的 swift 代码中不需要 _id,您可以忽略它并且不将其包含在您的可编码结构中。这样codable就会忽略它而不去处理它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-28
    • 2018-05-11
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多