我是Swift的新开发人员。我正在使用Swift 4.2和Xcode 10.1。
我正在尝试从Firebase快照创建字符串数组。我可以通过设置结构模型并使用初始化程序来做到这一点,但是当我想直接在代码中执行而没有单独的结构时,它将无法工作。这是我的代码:
// Get the likers
dbRef.child("likers").observeSingleEvent(of: .value) { snapshot in
// Declare an array to hold the Likers
var retrievedLikers = [String]()
// Loop through the retrieved likers and put into the array
for child in snapshot.children {
let snap = child as! DataSnapshot
let dict = snap.value as! [String:Any]
let likerId = dict["userId"] as? String ?? ""
print (likerId)
retrievedLikers.insert(likerId, at: 0)
}
likers = retrievedLikers
}
我的firebase数据模型如下:
我尝试了几种方法。上面的代码是基于另一个SO建议的最新代码。
问题是我无法使用snap.value创建字典。快照具有正确的数据。我收到一个错误消息:“无法将'__NSCFString'类型的值大小写为'NSDictionary'。但是快照显示为字典。这是屏幕截图:
任何帮助将不胜感激。我已经尝试了3个小时来解决这个问题。
答案 0 :(得分:1)
您可以尝试
let res = snapshot.value as! [String:String]
retrievedLikers = Array(res.values)
此处崩溃snap.value
是String
,无法转换为[String:Any]
let dict = snap.value as! [String:Any]