当我调用 post 方法时,我有一个方法NotificationCenter:
func processMessage(message: CocoaMQTTMessage) {
Log.d("DestinationTopicHandler: handling message")
//message.string: Contains the response of the server
print(message.string!) // print the response (String)
bus.post(name: .DestinationRespReceived, userInfo: [message.string! : String()])
}
这里我的 message.string 打印:
{
“req_token”:“测试”,
“conv_token”:“测试”,
"ts":"2017-04-05 12:00:00.123",
“代码”:0,
"message":"ACCESO CONCEDIDO",
“auth_token”:“测试”,
“回复”:{
“类型”:“测试”,
“数据”:{
“命运”:[
{
"idDestino":"1",
“desDestino”:“亚松森”
},
{
"idDestino":"2",
“desDestino”:“迈阿密”
}
]
}
}
}
这是我的 post 方法声明:
func post(name: Notification.Name, userInfo info : [AnyHashable : Any]? = nil) {
NotificationCenter.default
.post(name: name, object: nil, userInfo: info)
}
到目前为止一切正常。这是我尝试访问 userInfo 数据的最后一种方法:
public func responseReceived(_ notification: Notification) {
if processed {
return
}
processed = true
responseReceived = true
Log.i("responseReceived:")
guard let userInfo = notification.userInfo, let msg = userInfo["idDestino"] as? String else {
Log.v("No userInfo found in notification")
callback.onResponseReceived(nil)
return
}
if let json = msg.json {
callback.onResponseReceived(Response_Base(json: json.dictionary))
} else {
Log.v("Could not parse msg")
callback.onResponseReceived(nil)
}
}
问题是我不知道为什么程序总是返回“No userInfo found in notification”。任何人都可以帮助我吗?
我的 userInfo 输出是:
[AnyHashable("{ \n \"req_token\":\"test\",\n \"conv_token\":\"test\",\n \"ts\":\"2017-04-05 12: 00:00.123\",\n \"code\":0,\n \"message\":\"ACCESO CONCEDIDO\",\n \"auth_token\":\"jakldsfjalkdfj\",\n \"响应\":{ \n \"type\":\"test\",\n \"data\":{ \n \"destinos\":[ \n { \n \"idDestino\":\"1 \",\n \"desDestino\":\"ASUNCION\"\n },\n { \n \"idDestino\":\"2\",\n \"desDestino\":\"MIAMI\" \n }\n ]\n }\n }\n}"): ""]