【问题标题】:Pubnub messages not getting converted to JSON in SwiftPubnub 消息未在 Swift 中转换为 JSON
【发布时间】:2019-01-09 12:16:24
【问题描述】:

根据https://support.pubnub.com/support/solutions/articles/14000043790-can-i-send-and-or-receive-json-objects-,我们可以在 Pubnub 消息中发送 JSON 对象,我自己在以前的项目中已经完成了。

但这一次,这件事让我很难过。 在发送方我所做的是:

var json = [String : Any]
json["lat"] = 33.923892
json["long"] = 73.232873
json["userId"] = "abc"

在接收方我试图将其转换为:

let info = message.data.message.value as! [String : Any]

但它崩溃并给我错误:

无法将“__NSCFString”(0x1b69af5e8) 类型的值转换为 'NSDictionary' (0x1b69b04e8)

我尝试了不同的解决方案,包括:

  1. 序列化 JSON。
  2. 改为发送数组 [String : Any]。

但是每次我得到同样的错误。是的,我知道像 Could not cast value of type '__NSCFString' to 'NSDictionary' 这样的问题之前已经得到解答。但他们都没有为我工作。

【问题讨论】:

  • 什么是 JSONObject?抱歉我的无知,但这听起来像是一个 Java 类。
  • @JoakimDanielson 很抱歉没有提及。它只是我用于 [String : Any] 的类型别名。
  • 我已经改写了我的问题。立即查看
  • 代码昨天不工作。但是今天当删除派生数据时,清理构建的文件夹然后运行它,它与 [String : Any] 一起工作一切正常。好像我一直在尝试不同的事情,评论一个解决方案并运行另一个解决方案,所以 Xcode 出了点问题。 (这很奇怪)
  • 感谢大家调查我的问题并投入时间:)

标签: ios json swift pubnub


【解决方案1】:

替换

let info = message.data.message.value as! JSONObject 

let info = message.data.message.value as! String 

【讨论】:

  • 那我怎样才能得到我发送的 lat long 和 user id 的值呢?
  • 我猜这是一个 json 字符串打印上一行的输出,我会告诉你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 2021-12-26
相关资源
最近更新 更多