typeMismatch(Swift.Dictionary<Swift.String, Any>,
Posted
技术标签:
【中文标题】typeMismatch(Swift.Dictionary<Swift.String, Any>,【英文标题】: 【发布时间】:2021-03-17 15:09:55 【问题描述】:我的 JSON :
'''
"status": 200,
"data":
"widgets": [
"type": "small_half_slider",
"data":
"banners": [
"id": 42765,
"image": "",
"title": "!",
"is_ad": false,
"url":
"url": "",
"page": "web_link",
"params":
"url": ""
,
"queries": []
,
"video": "",
"description": "",
"bullet_points": []
'''
和我的结构:
'''
import Foundation
struct mainPage:Codable
var status:Int?
var data: mData?
struct mData:Codable
var widgets:[Mwidg]
struct Mwidg:Codable
var type:String
var data:wdata
struct wdata:Codable
var show_type:String?
var banners:[bannerData]?
struct bannerData:Codable
var id:Int?
var image:String?
var title:String?
var is_ad:Bool?
var url:urlData?
var video:String?
var description:String?
struct urlData:Codable
var url:String?
var page:String?
var params:paramsData?
var queries:[queriesData]?
struct paramsData:Codable
var url:String?
struct queriesData:Codable
'''
然后我遇到了这个错误:
typeMismatch(Swift.Dictionary
【问题讨论】:
嗯,显然数组widgets
的second 元素中的键data
的值类型是数组而不是对象。检查您的 JSON。它的价值是 ...
或 [...]
吗?
将您的 JSON 粘贴到 quicktype.io 中,看看它构建了什么结构,看看您是否会帮助找到错误的地方。
【参考方案1】:
您正面临这个问题,因为在您的 json 响应中,您没有获取值或获取 struct mData 和 Mwidg 中存在的属性的 nil 值,为了使您的解决方案使 struct 属性成为可选的,即使您没有在您的 json 响应中接收数据,代码将起作用。您粘贴的有问题的 json 未完成,您可能将某些对象设为 nil。
【讨论】:
以上是关于typeMismatch(Swift.Dictionary<Swift.String, Any>,的主要内容,如果未能解决你的问题,请参考以下文章