【发布时间】:2016-09-16 06:04:00
【问题描述】:
按下按钮时,我正在对从 Firebase 获取的数组执行某些过滤器。例如其中之一是:
self.PersonalSearchesList = PersonalSearchesList.sorted{ $0.users > $1.users }
self.tableView.reloadData()
问题是,当视图最初加载时,我想要应用其中一个过滤器..但我不知道在哪里运行过滤器。
如果我在查询后追加数组时运行排序,我的信息/单元格会被错误的信息全部占用。
我无法在 viewDiDLoad 中运行它,因为 firebase 的观察者正在 ViewDidLoad 中运行,此时不会填充数组。
编辑:
currentUserFirebaseReference.child("rooms").observeSingleEvent(of: .value) { (snapshot: FIRDataSnapshot) in
if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] {
for snap in snapshots {
DataService.ds.REF_INTERESTS.child(interestKey).observeSingleEvent(of: .value, with: { (snapshot: FIRDataSnapshot) in
if snapshot.value != nil {
if let users = (snapshot.value! as? NSDictionary)?["users"] as? Dictionary<String,AnyObject> {
DataService.ds.REF_USERS.child(topUser).child("pictureURL").observeSingleEvent(of: .value, with: { (snapshot: FIRDataSnapshot) in
self.PersonalSearchesList.append(eachSearch)
})
}
}
})
}
}
}
initialLoadOver = true
}
那么异步在什么时候结束?在哪一行的右括号之后我需要做这些事情?
【问题讨论】:
-
显示firebase闭包的代码,你在数组中追加数据。
-
@NiravD 刚刚编辑
标签: arrays swift sorting tableview firebase-realtime-database