gpt4 book ai didi

ios - 打开 VC 并从 Firebase 获取数据时出现应用程序 "freezes"

转载 作者:行者123 更新时间:2023-11-30 10:55:16 26 4
gpt4 key购买 nike

我遇到了这样的问题。当打开一个从 Firebase Storage 获取一些图片(在本例中为 9 张图片,每张图片几 KB)并从 Firestore 获取少量文档的新 VC 时,应用程序会卡住大约 2-4 秒,然后再打开打开并显示 View 。我有一个标签栏 Controller ,在 View 显示之前我无法点击任何其他标签栏元素。

我拥有所有 Firebase 引用并在 viewWillAppear 中调用该函数,我也尝试将所有内容放入 ViewDidLoad 和 viewDidAppear 中,但我遇到了同样的卡住。

这个问题有解决办法吗?我是做错了什么还是只能忍受这个?

我拥有最新的 Firebase 版本,我使用的是 swift 4,并且拥有 1000mb 的互联网连接。

var db: Firestore!

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
tableView.delegate = self
tableView.dataSource = self

db = Firestore.firestore()
getTasks()
tableView.reloadData()
}

func getTasks() {

db.collection("School").document(school).collection("Projects").document((project?.projectId)!).collection("Tasks").whereField("Completed", isEqualTo: false).addSnapshotListener { (snapshot, error) in
if let error = error {
print(error)
} else {
self.tasks = snapshot!.documents.compactMap({TaskModel(dictonary: $0.data())})
self.tableView.reloadData()
}
}
}

最佳答案

您似乎正在从主线程获取数据(这会阻塞 UI)。使用 GCD 异步获取数据,然后重新加载 TableView 。

DispatchQueue.global(qos: .background).async { 

self.getTasks()
DispatchQueue.main.async {
self.tableView.reloadData()
}
}

关于ios - 打开 VC 并从 Firebase 获取数据时出现应用程序 "freezes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54041360/

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