Не удалось привести значение типа «__NSCFString» к «NSDictionary» - PullRequest
0 голосов
/ 10 декабря 2018

Я хочу получить доступ к некоторым данным моего Json, находящимся внутри другого json

, вот мой код:

let extraData = userInfo["extraData"] as! [String : Any]
print(extraData["message_id"])

, но я получаю ошибку ниже при запуске:

Could not cast value of type '__NSCFString' (0x264300f90) to 'NSDictionary' (0x264301bc0)

вот мой Json:

[AnyHashable ("largeIcon"): http://test.png, AnyHashable ("notifyType"): notifyData, AnyHashable ("ledColor"): # f39c12, AnyHashable ("extraData"): {"is_background": 0, "message_id": "1156", "deep_link": {"action_type": "U", "url": "teknik: // teknik"}},AnyHashable ("message"): test, AnyHashable ("id"): 50368138, AnyHashable ("vibrate"): 1, AnyHashable ("gcm.message_id"): 0: 1544436390847% bebba17fbebba17f, AnyHashable ("autoRun"): false, AnyHashable ("action"): {"type": "A", "url": "Activity.MessageActivityJava"}, AnyHashable ("sound"): 3, AnyHashable ("title"): newtest, AnyHashable ("aps"): {" content-available "= 1;}]

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете попробовать

do { 
  let dd =  userInfo["extraData"] as! String  
  let con = try JSONSerialization.jsonObject(with: dd.data(using: .utf8)!, options: []) as! [String:Any]
  print(con["message_id"]) 
catch {
   print(error)
}

, так как extraData значение является строкой json, а не прямым словарем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...