加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Swift 4.1中将混合值类型字典编码为JSON

发布时间:2020-12-14 05:00:08 所属栏目:百科 来源:网络整理
导读:下面的代码适用于 Xcode 9.2( Swift 4.0),但在Xcode 9.3(Swift 4.1)中出现错误. let dict: [String: Any] = [ "status_code": 5,"status_message": "message"]let data = try! JSONEncoder().encode(dict) // ^ generic parameter 'T' could not be inferred
下面的代码适用于 Xcode 9.2( Swift 4.0),但在Xcode 9.3(Swift 4.1)中出现错误.

let dict: [String: Any] = [
    "status_code": 5,"status_message": "message"
]

let data = try! JSONEncoder().encode(dict)
                           // ^  generic parameter 'T' could not be inferred

我已经尝试制作字典[String:Encodable],并使用两种字典类型的类型,具有相同的结果. Swift不允许您在泛型调用中指定类型,因此会产生编译器错误.在Swift 4.1中它应该是什么样的?

解决方法

字典是否可编码?

在Swift 4.1中,字典< Key,Value>仅当Key和Value本身可编码时才符合Encodable.

Encodable(s)词典的示例

[String:Int]
[String:String]
[String:Double]

非Encodable(s)词典的示例

[String:Any]
[String:UIView]

那么,你怎么解决你的问题?

结构

使用模型值可能是最佳解决方案

struct Status: Codable {
    let statusCode: Int
    let statusMessage: String
}

let status = Status(statusCode: 45,statusMessage: "message")
let data = try? JSONEncoder().encode(status)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读