我确实发现了几次重复的帖子,但是似乎没有答案适用于我的情况。
我正在运行以下代码:
let dbRef = Database.database().reference()
guard let myUser = Auth.auth().currentUser else { return }
print("Statistics: initializeStatistics: dbRef object", dbRef.description())
userRef = dbRef.child("users").child(myUser.uid)
appStatsRef = dbRef.child("Stats/AppStats").child(myUser.uid)
globalStatsRef = dbRef.child("Stats/GlobalStats").child(myUser.uid)
locationStatsRef = dbRef.child("Stats/LocationStats")
if let appRef = appStatsRef {
print("Statistics: initializeStatistics: Setting Up Single Event observation. Ref=",appRef.description())
appRef.observeSingleEvent(of: .value, with: { (snapshot) in
print("Statistics: SingleObservation from: Ref: ", appRef)
print("Statistics: SingleObservation: Initial State of AppStats: ", snapshot)
}) {
(error) in
print("Statistics: SingleObservation: Error: ",error.localizedDescription)
}
我看到的日志消息是:
Statistics: initializeStatistics: UserId: zo9KcrXXXXXXXmSv8Cc8W2XeCb2
Statistics: initializeStatistics: dbRef object https://bxxxxxxx-30999.firebaseio.com
Statistics: initializeStatistics: Setting Up Single Event observation. Ref= https://bxxxxxxx-30999.firebaseio.com/Stats/AppStats/zo9KcrXXXXXXXmSv8Cc8W2XeCb2
Statistics: SingleObservation from: Ref: https://bxxxxxxx-30999.firebaseio.com/Stats/AppStats/zo9KcrXXXXXXRXmSv8Cc8W2XeCb2
Statistics: SingleObservation: Initial State of AppStats: Snap (zo9KcrXXXXXXXmSv8Cc8W2XeCb2) <null>
在Firebase数据库中,我具有以下结构和数据:
{
"Stats" : {
"AppStats" : {
"zo9KcrXXXXXXXmSv8Cc8W2XeCb2" : {
"ctime" : 1.531419079915515E9,
"dateFirstTaggedTicket" : 1.531419079470825E12,
"dateLastTaggedTicket" : 1.531419079470825E12,
"disabledHotballSupport" : false,
"firstGamePlayed" : 0,
"gamesCompleted" : 0,
"gamesContinuedAfterWin" : 0,
"gamesPlayed" : 0,
"gamesPlayedWithoutATaggedTicket" : 0,
"gamesStarted" : 0,
"lastAppLogin" : 1.531419079470824E12,
"lastGamePlayed" : 0,
"uid" : "zo9KcrXXXXXXXmSv8Cc8W2XeCb2"
}
}
}
}
如果我将查询更改为Observe查询而不是ObserveSingleEvent,然后使用“ updateChildValues”将单个值写入数据库,则观察关闭日志消息将在日志中显示两次。第一次(在写之前),我的快照.value为空,第二次(在UpdateChildValues发布之后),snapshot.value包含所有正确的数据。
有人可以帮助我理解为什么我看到Null值或指出我做错了什么吗?我要做的就是一次从密钥中检索信息,以便可以初始化一些本地对象。我是Swift和Firebase的新手,所以完全有可能-甚至有可能-我误解了一些非常基本的知识。预先感谢。