swift didReceiveRemoteNotification userInfo无法获取值

我使用推送通知,并有这个function:

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { if let msg = userInfo["msg"] as? NSObject { println(msg) } GCMService.sharedInstance().appDidReceiveMessage(userInfo); NSNotificationCenter.defaultCenter().postNotificationName(messageKey, object: nil, userInfo: userInfo) } 

这打印我:

 {"model":"que","data":{"id":101,"vehicle":{"license_plate":"test","taxi":{"id":1,"logo":"/media/logos/mega_CxRn739.png.75x75_q85_crop.png","name":"Mega","city":"Novi Pazar","country":"Srbija"},"label":"A01"}}} // prettify: { "model": "que", "data": { "id": 101, "vehicle": { "license_plate": "test", "taxi": { "id": 1, "logo": "/media/logos/mega_CxRn739.png.75x75_q85_crop.png", "name": "Mega", "city": "Novi Pazar", "country": "Srbija" }, "label": "A01" } } } 

现在当我使用:

 if let msg = userInfo["msg"] as? NSObject { println(msg["model"]) println(msg["data"]) } 

我不能build立:

 'NSObject' does not have a member named 'subscript' 

我怎样才能得到这个工作? 在这之后我需要得到所有的信息,但是不能做第一步。

图片: 在这里输入图像说明

修正

 if let msg = userInfo["msg"] as? String { if let data = msg.dataUsingEncoding(NSUTF8StringEncoding) { if let jsonObject: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(), error: nil) { var data = JSON(jsonObject!) println(data["data"]) } } } 

如果有人有这个修复build议,告诉我..谢谢。

 if let msg = userInfo["msg"] as? String { if let data = msg.dataUsingEncoding(NSUTF8StringEncoding) { if let jsonObject: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(), error: nil) { var data = JSON(jsonObject!) println(data["data"]) } } } 

如果有人有这个修复build议,告诉我..谢谢。

有效载荷中的相关对象是字典,所以将msg的值赋予更具体的值

 if let msg = userInfo["msg"] as? [String:AnyObject] { println(msg["model"]) println(msg["data"]) } 

编辑:

msg的对象可能只是一个JSONstring。 尝试这个:

 if let msg = userInfo["msg"] as? String { println("yeah, it's a string") if let data = msg.dataUsingEncoding(NSUTF8StringEncoding) { if let jsonObject: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(), error: nil) { println(jsonObject["model"]) println(jsonObject["data"]) } } }