gpt4 book ai didi

ios - 将Firebase的数据库与Swift 4语言同步

转载 作者:行者123 更新时间:2023-11-30 12:00:47 25 4
gpt4 key购买 nike

我是 swift 4 编程的新手。我尝试显示 firebase 数据库中的一些数据(实际上它们是 child 的名字)。当 View 加载时,我可以将它们显示在 tableView 上,但它不能实时工作。当我从 firebase 中删除一些数据时,我需要刷新(返回并再次加载)viewController。如果我用计时器刷新 tableView,所有数据都会从其末尾追加。如果我首先将新数据添加到 tableView 后删除。它在抖动。有没有办法将此 tableView 与 firebase 同步,而不会出现这些问题?

override func viewDidLoad() {
super.viewDidLoad()

ref = Database.database().reference()
ref.keepSynced(true)

let userRef = self.ref.child("Users").child(Username).child("Schedule")
userRef.observeSingleEvent(of: .value, with: { snapshot in
for child in snapshot.children {
let snap = child as! DataSnapshot
let key = snap.key
self.myList.append(key)
self.CourseList.append(key)
self.LessonsTableView.reloadData()
}
// Lessons are taking and after, they are locating under phone's memory!
UserDefaults.standard.set(self.CourseList, forKey: "LessonsArray")
UserDefaults.standard.synchronize()
})
}

//Setting up our table
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myList.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = LessonsTableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! LessonsTableViewCell
cell.myLabell.text = myList[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let Dummy:String = myList[indexPath.row] as Any as! String
let Selected:String = (Dummy as NSString) as Any as! String
UserDefaults.standard.set(Selected, forKey: "Selected")
self.performSegue(withIdentifier: "NextPage", sender: self)
}

最佳答案

Firebase 的任务是一项网络任务,通常在后台(优先级较低)线程上运行。但 tableView.reloadData() 是一个 UI 任务。所以你可能需要通过下面的代码来执行UI相关的代码。

DispatchQueue.main.sync {
let snap = child as! DataSnapshot
let key = snap.key
self.myList.append(key)
self.CourseList.append(key)
self.LessonsTableView.reloadData()
}

关于ios - 将Firebase的数据库与Swift 4语言同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47270616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com