下面的代码适用于
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] 举报,一经查实,本站将立刻删除。