首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取API Swift

获取API Swift
EN

Stack Overflow用户
提问于 2022-06-09 13:32:58
回答 1查看 63关注 0票数 0

以前,我正在处理的API如下所示

代码语言:javascript
复制
{
  "kurumsicilno": 457.0,
  "yillikizin": 30.0,
}

我的模型如下所示

代码语言:javascript
复制
struct Leave: Decodable, Identifiable {
    var id: Double? {
        return registerNumber
    }
    let registerNumber: Double
    let annualLeave: Double
    
    enum CodingKeys: String, CodingKey {
        case registerNumber = "kurumsicilno"
        case annualLeave = "yillikizin"
    }
}

这是我的网络功能

代码语言:javascript
复制
 let task = session.dataTask(with: request) { (data, response, error) in
            if error == nil {
                let decoder = JSONDecoder()
                if let safeData = data {
                    do {
                        let result = try decoder.decode(Leave.self, from: safeData)
                        DispatchQueue.main.async {
                            completion(result)
                        }
                    } catch {
                        print(error)
                    }
                }
            }
        }
        task.resume()

但出于某种原因,他们已将API更改为此。

代码语言:javascript
复制
{
"isSucceed": true,
"singleData": {
    "sicilNo": "457",
    "yillikIzin": "30",
},

我应该如何修改我的模型,这样我才能像以前一样到达并获取数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-09 13:44:55

只需创建一个新的根结构

代码语言:javascript
复制
struct Response : Decodable {
   let isSucceed: Bool
   let singleData: Leave
}

并且您必须更改类型和( CodingKeys之一)

代码语言:javascript
复制
struct Leave: Decodable, Identifiable {
    var id: String { // no Optional!!
        return registerNumber
    }
    let registerNumber: String
    let annualLeave: String
    
    enum CodingKeys: String, CodingKey {
        case registerNumber = "sicilNo"
        case annualLeave = "yillikIzin" // is this really a capital `I`?
    }
}

最后更改解码码

代码语言:javascript
复制
let result = try decoder.decode(Response.self, from: safeData)
      DispatchQueue.main.async {
          completion(result.singleData)
      }

您可能必须在其他代码中管理类型更改双→字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72561246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档