在Swift 3.0中访问嵌套的NSDictionary值

我从Firebase收到以下数据。 我已将snapshotValue设为NSDictionary。

在此处输入图像描述

self.ref.child("users").child(facebookID_Firebase as! String).observeSingleEvent(of: .value, with: { (snapshot) in let snapshotValue = snapshot.value as? NSDictionary print(snapshotValue, "snapshotValue") //this line of code doesn't work //self.pictureURL = snapshot["picture"]["data"]["url"] }) { (error) in print(error.localizedDescription) } 

我试过如何操作Swift中的嵌套字典,例如JSON数据? , 如何在Swift中访问深层嵌套的词典 ,以及其他解决方案但没有运气。

如何访问数据键和图片密钥中的url值?

我可以在Firebase中创建另一个引用并获取值,但我正在尝试保存另一个请求。 😓

当您在swift中引用Dictionary的键时,您将获得一个未包装的值。 这意味着它可以是零。 您可以强制解包该值,或者if let =您可以使用pretty

这应该可行。

 if let pictureUrl = snapshot["picture"]["data"]["url"] { self.pictureURL = pictureUrl } 

尝试使用: –

  if let pictureDict = snapshot.value["picture"] as? [String:AnyObject]{ if let dataDict = pictureDict.value["data"] as? [String:AnyObject]{ self.pictureURL = dataDict.value["url"] as! String } } 

内联字典解包:

 let url = ((snapshot.value as? NSDictionary)?["picture"] as? NSDictionary)?["url"] as? String 

您可以使用以下语法,它更漂亮:

  if let pictureDict = snapshot.value["picture"] as? [String:AnyObject], let dataDict = pictureDict.value["data"] as? [String:AnyObject] { self.pictureURL = dataDict.value["url"] as! String } }