【问题标题】:How to publish data as Dictionary with type Any in pubnub with swift?如何使用swift在pubnub中将数据发布为Any类型的字典?
【发布时间】: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]

标签: swift xcode pubnub


【解决方案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,以便您可以依赖类型安全

【讨论】:

  • 这对你有用吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 2016-06-05
相关资源
最近更新 更多