【问题标题】:Access PNMessageResult in PubNub Swift在 PubNub Swift 中访问 PNMessageResult
【发布时间】:2015-08-10 12:52:16
【问题描述】:

See this link

基于以下功能,我能够收到响应,

func client(client: PubNub!, didReceiveMessage message: PNMessageResult!) {
println(message)

但是,我只能以 PNMessageData 格式的 message.data 访问数据。

即使返回以下格式的数据:

{
message = "{}";
subscribedChannel = 123;
timetoken = 14392105288780634;}

如何访问 message.data(PNMessageData) 中的 message 值?

【问题讨论】:

    标签: ios swift xcode6 pubnub


    【解决方案1】:

    我已经编写了解析 PNMessageResult 的简单方法

    func client(_ client: PubNub, didReceiveMessage message: PNMessageResult) {
    
        //Message Received on Channel:
        let channel = message.data.channel
    
        //Message Received:
        guard let messageData = message.data.message as? [String : AnyObject] else { return }
    
        //Event:
        guard let event:String = messageData["event"] as? String 
    
        let data:AnyObject = messageData["data"] else { return }
    
        guard let dict = data as? NSDictionary else { fatalError("Couldn't parse pubnub message") }
    
        //This will be message in dictionary
        let mutableDict = dict.mutableCopy() as! NSMutableDictionary
    
    }
    

    【讨论】:

      【解决方案2】:

      您非常接近访问数据。 SDK 将接收到的 JSON 序列化,并将消息作为字典存储在 message.data.message 上,该字典应该是字典。

      试试这个:

      func client(client: PubNub!, didReceiveMessage message: PNMessageResult!) {
          let dictionary: AnyObject = message.data.message
          println(dictionary["accelertiony"]);
          println(dictionary["accelerationx"]);
      }
      

      【讨论】:

      • 虽然有一些变化,但是从服务器发布的数据被反序列化并且只有在此之后才能工作。变量错误:NSError?让 x = NSJSONSerialization.JSONObjectWithData((dictionary as!NSString).dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!,选项:NSJSONReadingOptions.MutableContainers,错误:&error) as!字典
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多