【问题标题】:Cannot assign value of type '[JSON]' to type '[MyStruct]'无法将类型“[JSON]”的值分配给类型“[MyStruct]”
【发布时间】:2021-04-30 08:32:49
【问题描述】:

我正在学习使用 SwiftyJSON,并尝试将结果值转换为 MyStruct 数组。但是,每当我尝试这样做时,它都会告诉我它们不兼容。如何将 [JSON] 转换为 [MyStruct]?

class TreatmentsManager: ObservableObject {

 @Published var treatments = [Treatment]()
 func testAlamofire() {
  AF.request("http://dermaservice.theappmaster.com/Tratamiento.ashx").response { response in
    switch response.result {
    case .success(let value):
        let json = JSON(value)
        if let treatmentArray = json["Tratamientos"].array {
            self.treatments = treatmentArray
         //[MyStruct] type /= [JSON] type
        }
    case .failure(let error):
        print(error)
    }}}}

【问题讨论】:

  • 您必须将您的 json 转换为模型格式,然后才能将其分配给您的模型。参考这个stackoverflow.com/a/51319533/4754213
  • 刚看到你编辑。谢谢!
  • 检查已编辑的答案。
  • @VishalPatel,我查看了链接。我怎样才能将它整合到 Alamofire 中?
  • 检查你的视频群聊。

标签: arrays swift swiftui alamofire swifty-json


【解决方案1】:

感谢@VishalPatel,我想出了办法:

class TreatmentsManager: ObservableObject {

  @Published var treatments = [Treatment]()
  func testAlamofire() {
    AF.request("http://dermaservice.theappmaster.com/Tratamiento.ashx").response { response in
        switch response.result {
        case .success(let value):
            do {
                let results = try JSONDecoder().decode(TreatmentList.self, from: value!)
                DispatchQueue.main.async {
                  self.treatments = results.Tratamientos
                  }
                } catch {
                print(error)
                }
        case .failure(let error):
            print(error)
        }
     }
  }
}

TreatmentList 是一个包含 [Treatments] 的结构。 所以不需要使用 SwiftyJSON

【讨论】:

    猜你喜欢
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2017-08-07
    • 2021-03-08
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多