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"]) } } }