微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

下面的代码适用于 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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐