gpt4 book ai didi

swift - 异步任务遇到问题

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

我正在开发一个使用 firebase 数据库的项目,此时我正在尝试使用这段代码从我的库读取异步数据:

let myGroup = DispatchGroup()
let ref1 = FIRDatabase.database().reference().child("chats")
let curUserUid = (FIRAuth.auth()?.currentUser?.uid)!
myGroup.enter()
ref1.observe(FIRDataEventType.value, with: { (snapshot) in
if snapshot.hasChildren() {
let postDict = snapshot.value as? [String : AnyObject] ?? [:]
for elem in postDict {
let valuesDict = elem.value as? [String : AnyObject] ?? [:]
for kv in valuesDict {

if kv.key == "name" && kv.value.contains(curUserUid) {
MainUsersList.currentChats.append(elem.key)
print(elem.key)
}

}

}
}
myGroup.leave()
})
myGroup.notify(queue: .main, execute: {
//self.loadLastMsgs()
self.ShowVC()
})

以及ShowVC方法:

let st = UIStoryboard(name:"Main", bundle: nil)
let anotherVC = st.instantiateViewController(withIdentifier: "messagesVC")
self.present(anotherVC, animated: true, completion: nil)
print("showVC")

在另一个 VC 中,我在 viewDidLoad 中有以下代码:

print("!!!!!!!")
print(MainUsersList.currentChats.count)

当我单击按钮(编写第一段代码)时,我会在控制台中看到以下内容:

!!!!!!!

0

y2MTmBq8o0QF9yxcSBCOpI1DZku2-DnYqmHW2umWaWN54buhtGrXEToW2 //elem.key

showVC

!!!!!!!

1

所以,我的问题是为什么 ShowVC 在异步任务结束之前执行以及为什么它执行两次(我没有其他带有 print(!!!!!!!!!) 的代码)?提前致谢!附:而且我肯定没有在其他地方编写 self.ShowVC() 代码

最佳答案

我已经知道出了什么问题了。我刚刚触发了第二个 VC 的 segue,因此我的代码执行了两次。所有其他代码都是正确的)

关于swift - 异步任务遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44682770/

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