【发布时间】:2018-05-31 01:40:49
【问题描述】:
我有一个应用程序,它应该首先从 firebase 数据库中读取一个子节点,然后将其子节点的键存储在一个数组中。之后,我编写了将新值写入我在 firebase 中读取的同一个孩子的函数。
我希望 read 函数只读取一次,而不是像现在这样更新自身。我想得到第一个值而不是 writeFunction 写的。
前: 在我的火力基地: 电影{ 242:勇敢者游戏:欢迎来到丛林 342:“雷神:诸神黄昏” }
在我的代码中:
func readOldMovieID(){
ref = Database.database().reference()
let userID = Auth.auth().currentUser?.uid
ref?.child("users").child(userID!).child("Movie").observeSingleEvent(of: .childAdded, with: { (snapshot) in
print("read Key:")
print(snapshot.key)
self.lastMovie.append(snapshot.key)
}) { (error) in
print(error.localizedDescription)
}
我尝试了不同的代码来使这个函数读取一个!但我想我还是找不到合适的。
【问题讨论】:
-
observeSingleEvent(of: .value)适合您吗?它只会读取一次并移除观察者。 -
它不能正常工作。当 firebase 上的值更新时,lastMovie 数组正在更新。
-
我在 viewLoad 上调用了 readFunction 一次
-
我只是注意到在我的应用程序中,firebase 中可能不存在子电影,因此读取函数在写入函数后起作用。所以我要写一个条件,如果孩子不存在然后保持数组为空。
-
为了在同一页面上,您尝试使用
.value而不是.childAdded调用,对吗?
标签: ios swift firebase firebase-realtime-database