swift 无法在集合视图中使用 api 数据

2023-12-02

我的 JSON 是 -

    {
    "status": "success",
    "data": [
        {
            "_id": "15756323",
            "name": "A",
            "icons": "https://sdfgsuew34j.png",
            "createdAt": "2021-03-18T13:06:44.054Z",
            "updatedAt": "2021-03-18T13:06:44.054Z",
            "__v": 0,
            "id": "6053503drm476"
        },
        {
            "_id": "45646054821",
            "name": "S",
            "icons": "https://dkj/djf.png",
            "createdAt": "2021-03-19T10:51:07.066Z",
            "updatedAt": "2021-03-19T10:51:07.066Z",
            "__v": 0,
            "id": "6054821b11kd6873"
        }
]
  }

我正在尝试在 collectionView 中打印 API 数据 这是一些代码

    var places: [Post]?
       func apicall() {
            
            let url = URL(string: "http://17.550.457.84/api/category/list")!
            URLSession.shared.dataTask(with: url) { (data, response, error) in
                
                if error == nil {
    
                do {
                    self.places = try JSONDecoder().decode([Post].self, from: data! )
                  
                } catch {
                    print("Error during JSON serialization: \(error.localizedDescription)")
                }
                
            }
        }.resume()
    }

我在调试器中收到一条消息 -> JSON 序列化期间出错:无法读取数据,因为格式不正确。

我也尝试改变->self.places = try JSONDecoder().decode([Post].self,来自:数据! )` 到

self.places = try JSONDecoder().decode(Post.self, from: data! )

然后我收到错误 -> 无法将“Post”类型的值分配给“[Post]”类型?

这是我的模型类

struct Post : Codable {
    let _id : String?
    let name : String?
    let icons : String?
    let createdAt : String?
    let updatedAt : String?
    let __v : Int?
    let id : String?
    
    enum CodingKeys: String, CodingKey {
        
        case _id = "_id"
        case name = "name"
        case icons = "icons"
        case createdAt = "createdAt"
        case updatedAt = "updatedAt"
        case __v = "__v"
        case id = "id"
    }

错误消息基本上是“您的模型和即将到来的数据模型(JSON)不相等”。您需要更改您的模型,例如:

struct BaseModel : Codable{
   var status : String?
   var data : [Post]?
}

当您尝试反序列化它时,您需要创建该 BaseModel 的实例,以便

    var baseModel: BaseModel?
    var places: [Post]?
 

当响应成功时

 do {
       let responseData = try JSONDecoder().decode(BaseModel.self, from: data! )
        self.places = responseData.data!
              
 } catch {              

        print("Error during JSON serialization: \(error.localizedDescription
   }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

swift 无法在集合视图中使用 api 数据 的相关文章

随机推荐

  • 比较 datetime2 时 SQL 忽略纳秒

    我有 2 张桌子 上面有一个datetime2各场 其中一个表也存储了纳秒 而另一个表最多只存储毫秒 无法更改此数据 现在我想比较这两个表并检查是否datetime2值匹配 但我必须为此忽略纳秒 样本数据 Table1 Table2 201
  • 在 IE 11 中获取未定义的 JavaScript 函数

    在 IE 11 中调用函数时出现一些错误 在我的例子中 一个脚本中有两个脚本
  • 用于比较具有变音符号和非变音变体的字符串的正则表达式

    任何人都可以帮助我使用 JavaScript 正则表达式 我可以使用它来比较相同的字符串 同时考虑到它们的非变音版本 例如 在德语中这个词Gr e也可以写成Gruesse 这两个字符串被认为是相同的 映射 暂时忽略大小写 是 ae ue o
  • Azure流分析如何处理多个输出表?

    我创建了一项 ASA 作业 还创建了 1 个输入别名和 1 个输出别名 像这样 我像这样编辑了查询部分 WITH StreamData AS SELECT employee id first name last name age salar
  • SQL Server 2005 中使用 CTE 的递归查询

    好的 这就是我想做的 我在 MSSQL2005 中使用 CTE 查询 查询的目标是通过产品类别的父子关系进行递归 并返回每个类别下的产品数量 这包括子类别中包含的所有产品 我当前的版本仅返回所显示类别的产品数量 它没有考虑其任何子项中可能包
  • 无法使用简单注入器注册 Api 控制器?

    我有一个使用 Simple Injector 的 WebApi 它工作得很好 但我必须在项目中实现 OAuth 现在我已经做到了 我的 ApiControllers 给了我一个错误 比如 Simple Injector 现在已经正确设置 我
  • 什么是 Zend 框架“资源”?

    我知道这个问题很愚蠢 我经常在文档中看到这个术语 但我仍然没有从我遇到的这样的上下文中得到启发 资源 和 图书馆 有什么区别 在我的假设中 我得出的结论是它们只是一组加载的类 我想确认一下我的说法是否正确 但我不明白为什么他们在 Zend
  • JEdi​​torPane 和自定义编辑器套件

    我有一个小问题 我需要将现有文件加载到JEditorPane使用自定义编辑器套件 我有一个编辑器工具包 一个带有某些扩展名的文件 我需要强制JEditorPane识别我的文件并使用我的编辑器套件 我只发现 这是可能的 但无处可去 该套件也基
  • UITextField 中的填充

    是否可以在 UITextField 内设置填充 如果可以的话如何设置 我也想知道 你在这里 UIView paddingView new UIView new CGRect 0 0 5 20 YourTextField LeftView p
  • 在Java中递归反转字符串的最佳方法是什么?

    今天我一直在搞递归 通常是一种未充分使用的编程技术 我开始递归地反转一个字符串 这是我想出的 A method to reverse a string using recursion public String reverseString
  • 发送属性作为 mixin 的参数

    我想分解所有媒体查询并将 CSS 属性作为参数传递 bp1 css media max width 959px css bp1 width 186px 不幸的是 这不起作用并导致 Less 失败 从Less v1 7 0开始 可以通过分离的
  • Boost 二进制存档 - 减小大小

    我正在尝试减少 C 中 boost 档案的内存大小 我发现的一个问题是 Boost 的二进制存档默认对任何 int 使用 4 个字节 无论其大小如何 因此 我发现空的 boost 二进制存档需要 62 个字节 而空的文本存档需要 40 个字
  • JavaScript:什么是 addEventListener?

    这个功能是什么 确实没有找到任何好的例子 The addEventListener方法是W3C标准方法将事件处理程序附加到元素 以便您可以在触发事件时执行一些有用的操作 下面的例子会在 id 的元素出现时弹出警告信息my image id被
  • 有什么方法可以访问 C++ 外部作用域中的局部变量吗?

    只是出于好奇 如果我有嵌套作用域 就像在这个示例 C 代码中一样 using namespace std int v 1 global int main void int v 2 local int v 3 within subscope
  • 使用纯 CSS 制作速度表指针动画

    我已经在这里尽力了Jsfiddle 现在我想从左到右缓慢到快速地设置中心针点的动画 我听说过 css 关键帧并尝试过 但是 它向左向右 我没有得到预期的结果 如何仅使用纯 css 为这根针制作动画 CSS logo display inli
  • NextJS:处理 Connect / OwnProps / GetInitialProps 的最佳方式

  • Django - 如何从模板获取 {% block %} 标签的内容

    我到目前为止 gt gt gt some template get template from string load template source some template html settings TEMPLATE DIRS gt
  • 自动突出显示时间序列图中值高于特定阈值的部分的方法?

    我正在寻找一种自动方式来突出显示情节的某些部分Station2值大于预定义的阈值 在本例中为 0 我可以通过指定手动完成Date在数据框中 dateRanges 检查情节后 预先感谢您的任何建议 library ggplot2 sample
  • 使用find和curl将目录内容上传到Sonatype Nexus存储库

    我正在尝试使用curl通过bash将目录的内容上传到nexus 但我正在使用的命令存在一些问题 简而言之 我想在特定目录上执行 find 命令 并使用 exec 操作对 nexus 执行curl操作 但是我的 find 命令返回包括源目录的
  • swift 无法在集合视图中使用 api 数据

    我的 JSON 是 status success data id 15756323 name A icons https sdfgsuew34j png createdAt 2021 03 18T13 06 44 054Z updatedA