如何使用swift在pubnub中将数据发布为Any类型的字典?
Posted
技术标签:
【中文标题】如何使用swift在pubnub中将数据发布为Any类型的字典?【英文标题】:How to publish data as Dictionary with type Any in pubnub with swift? 【发布时间】: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]
【参考方案1】:
使用 PubNub Swift SDK 发布消息
以下是一些关于如何发布消息的代码示例:https://www.pubnub.com/docs/sdks/swift/api-reference/publish-and-subscribe#publish-a-dictionary-object
如果您尝试执行[String: Any]
,那么您将无法直接执行此操作。您可以将其传递给我们的 AnyJSON
对象,例如:
AnyJSON(yourDictionary)
但您确实应该使用自定义对象而不是Any
,以便您可以依赖类型安全。
【讨论】:
这对你有用吗?以上是关于如何使用swift在pubnub中将数据发布为Any类型的字典?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 swift 在 UIResponder 子类中将属性重新声明为读写?
如何在 Swift 中将 CMSampleBuffer 转换为数据?