gpt4 book ai didi

ios - queryEqualTo 被跳过

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

我正在尝试为我的应用程序设置一个 viewCount,当我设置断点并检查代码时,它总是跳过 queryOrdered,我不确定为什么

func increaseViewCount(username: String, time: NSNumber){
guard let uid = Auth.auth().currentUser?.uid else{
return
}
let refOfUserName = Database.database().reference().child("Users").child(uid)
refOfUserName.observeSingleEvent(of: .value, with: {(snapshot) in
let dictionaryOfUser = snapshot.value as? [String: AnyObject]
// let currentUsersName = dictionaryOfUser?["username"] as? String
let currentUsersName = "hello"

if username == currentUsersName {
print("this is the same user")

}else{

let postRef = Database.database().reference().child("HistoryOfPosts").child("post")
postRef.queryOrdered(byChild: "post").queryEqual(toValue: time).observeSingleEvent(of: .childAdded, with: {(snapshotPost) in

print(snapshotPost.exists())
print(snapshotPost)

let valString = snapshotPost.value
let number = valString as! NSNumber
var value = number.intValue
value = value + 1
let values = ["viewCount": value] as [String:Any]
postRef.updateChildValues(values)

})
}
})
}

最佳答案

数据是从 Firebase 数据库异步加载的。程序不会等待加载完成,而是在您附加观察器后 继续执行语句。

在这种情况下,这意味着代码几乎在附加观察者后立即退出 increaseViewCount()。然后,一旦数据从 Firebase 服务器返回,就会执行回调 block 中的代码。

进入回调 block ,请在该 block 的第一条语句上放置一个断点。

关于ios - queryEqualTo 被跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44787091/

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