【发布时间】:2016-11-08 01:51:37
【问题描述】:
我正在学习有关 Udemy 的课程,以使用 Firebase、Backendless 和 Swift 构建聊天应用程序。所有的问题(它是为 Swift 2 而不是 3 编写的)我已经能够自己解决,但是这个问题让我很难过。这个函数应该从 Firebase 数据库中检索数据,显然它应该将其作为 NSArray 检索,但现在它作为 NSDictionary 检索它,这在其他函数中产生了大量错误,因为它不期望字典。
func loadRecents() {
firebase.childByAppendingPath("Recent").queryOrderedByChild("userId").queryEqualToValue(currentUser.objectId).observeEventType(.Value, withBlock: {
snapshot in
self.recents.removeAll()
if snapshot.exists() {
let sorted = (snapshot.value.allValues as NSArray).sortedArrayUsingDescriptors([NSSortDescriptior(key: "date", ascending: false)])
}
})
}
我已经更新到 Swift 3:
func loadRecents() {
ref = FIRDatabase.database().reference()
let userId = currentUser?.getProperty("username") as! String
ref.child("Recent").queryOrdered(byChild: "userId").queryEqual(toValue: userId).observe(.value, with: {
snapshot in
self.recents.removeAll()
if snapshot.exists() {
let values = snapshot.value as! NSDictionary
}
})
}
当然,使用as! NSArray 是行不通的。如果有人能建议一种方法来更新它以使用 Swift 3,按数据中的值对其进行排序,并且以后能够访问它,将非常感激。谢谢!
【问题讨论】:
标签: ios arrays firebase firebase-realtime-database swift3