【发布时间】:2021-11-17 13:34:17
【问题描述】:
我正在使用 pubnub sdk 处理套接字。我的问题是我想发送任何类型的数据字典格式,但是当我尝试这样做时,编译器会说:协议类型'Any'的值不能符合'JSONCodable';只有 struct/enum/class 类型可以符合协议。如果我使用相同类型的数据发送,那么它是允许的。那么如何发送任何类型的字典中的数据。
var params = [String : Any]()
params["isContinous"] = true
params["pressure"] = 1
params["reset"] = true
params["StrokeWidth"] = 11.0
pubnub.publish(channel: "ch:broadcastPoints", message: params) { result in
switch result {
case let .success(response):
print("Successful Publish Response: \(response)")
case let .failure(error):
print("Failed Publish Response: \(error.localizedDescription)")
}
}
【问题讨论】:
-
你试过
[String: AnyObject]吗? -
不......让我检查一下
-
通过使用 AnyObjetct 它也会抛出错误,因为 AnyObject' 不能用作符合协议 'JSONCodable' 的类型,因为 'JSONCodable' 具有静态要求
-
创建一个符合
JSONCodable:struct Custom: JSONCodable { let isContinous: Bool; let pressure: Int; let reset: Bool; let StrokeWidth: Double }的结构并使用它。let params = Custom(isContinous: true, pressure: 1, reset: true, strokeWidth: 11.0). -
或者试试
[String: JSONCodable]