我正在尝试访问userInfo字典,application:didReceiveRemoteNotification()以便我可以根据收到的推送类型/是否收到任何推送来选择segue.我已经尝试过这两种方式(其他一些方式,我敢肯定,我现在还记不起来).
if let info = userInfo as? Dictionary<String,String> {
var notificationType = info["notificationType"]
}
if let info: String = userInfo["notificationType"] as? String {
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
我没有得到任何错误,我根本没有得到任何东西.如果我打印userInfo字典,它只有一个成员["aps"],其中包含显示给用户的推送消息,所以即使我可以访问它,我也可以使用它进行条件化.
我尝试按照Parse API写入userData:
let data = ["notificationType" : "coffee"]
push.setData(data)
Run Code Online (Sandbox Code Playgroud)
所以一个问题是这似乎没有设置任何东西,但更大的问题是我无法获取任何userInfo数据.
你怎么访问这本字典?
编辑
一些打印声明结果:
println(userInfo["aps"]) => {alert = "You've Been Invited To A Coffee Order";}
println(userInfo) => [aps: {alert = "You've Been Invited To A Coffee Order";}, type: coffee]
println(userInfo[0]) => nil
let info = userInfo as? Dictionary<String,String>
println(info) => …Run Code Online (Sandbox Code Playgroud) 我意识到这个问题已被多次提出,但它似乎是由许多不同的事情引起的,并且非常具有情境性.
我的踪迹:
2015-02-27 16:20:06.289 RTApp[43486:1122681] -[RTApp.conversationVC keyboardWasShown]: unrecognized selector sent to instance 0x7f866a766830
2015-02-27 16:20:06.291 RTApp[43486:1122681] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[RTApp.conversationVC keyboardWasShown]: unrecognized selector sent to instance 0x7f866a766830'
*** First throw call stack:
(
0 CoreFoundation 0x00000001071b8f35 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000106e51bb7 objc_exception_throw + 45
2 CoreFoundation 0x00000001071c004d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
3 CoreFoundation 0x000000010711827c ___forwarding___ + 988
4 CoreFoundation 0x0000000107117e18 _CF_forwarding_prep_0 + 120
5 CoreFoundation 0x0000000107188cec __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
6 CoreFoundation 0x00000001070888a4 _CFXNotificationPost …Run Code Online (Sandbox Code Playgroud)