如何使用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 转换为数据?

如何在 Swift 中将 JSON 转换为数据类型?

如何使用 CIFilter 在 Swift 中将 UIImage 转换为灰度?

在 SQL 中将分隔的行拆分为列

如何在 Swift 3 中将 NSData 转换为数据?