Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在PubNub Swift中访问PNMessageResult_Ios_Swift_Xcode6_Pubnub - Fatal编程技术网

Ios 在PubNub Swift中访问PNMessageResult

Ios 在PubNub Swift中访问PNMessageResult,ios,swift,xcode6,pubnub,Ios,Swift,Xcode6,Pubnub,根据以下功能,我能够收到响应 func client(client: PubNub!, didReceiveMessage message: PNMessageResult!) { println(message) 但是,我只能以message.data的格式访问数据,该格式为PNMessageData 即使这样,也会以以下格式返回数据: { message = "{}"; subscribedChannel = 123; timetoken = 14392105288780634;} 如何

根据以下功能,我能够收到响应

func client(client: PubNub!, didReceiveMessage message: PNMessageResult!) {
println(message)
但是,我只能以message.data的格式访问数据,该格式为PNMessageData

即使这样,也会以以下格式返回数据:

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

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

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

试试这个:

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

我已经编写了解析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

}

虽然很少有更改,但服务器发布的数据是反序列化的,并且只有在此之后才能工作。var错误:N错误?设x=NSJSONSerialization.JSONObjectWithData((字典为!NSString)。数据使用编码(NSUTF8StringEncoding,allowossyconversion:true)!,选项:NSJSONReadingOptions.MutableContainers,错误:&错误)为!字典