【发布时间】:2021-07-26 20:48:08
【问题描述】:
我正在构建一个使用 firebase 实时数据库的应用程序。这是我的数据库内容。
在这里,当一个新的子节点添加到请求节点时,我需要获取 Phno 和 Message 值并在控制台中打印它。 这是我的观察者代码
user.observe(.childAdded) { (DataSnapshot) in
print("Inside")
if let dict = DataSnapshot.value as? NSDictionary
{
for i in dict.allKeys
{
if let data = dict[i] as? NSDictionary
{
let message = data["Message"] as! String
let phno = data["Phno"] as! String
if(message != "" && phno != "")
{
print(message)
print(phno)
}
}
}
}
我将上面的代码放在一个函数中,并第一次在 viewdidload() 中调用它。之后我尝试手动将子节点添加到请求节点但观察者没有触发。我使用“内部”打印语句进行调试,我在日志输出中发现了一些奇怪的东西
正如您所见,Inside 在视图加载期间被调用一次,但它再次被调用,甚至没有对数据进行任何更改。我该如何解决这个问题,以便在将新的子节点添加到请求节点时调用触发器
【问题讨论】:
-
.childAdded 事件为每个节点调用一次,然后在随后添加子节点时调用。看起来您已将其添加到 bill 节点,因此需要为两个子节点调用它; Request 节点,然后是 name 节点。请求节点具有与您显示的输出相匹配的子数据。请参阅入门指南Listen for child events。你想做什么?你能澄清这个问题吗?哦,请将代码和结构添加为文本,以便我们在需要时将它们复制/粘贴到答案中。
-
我正在构建一个类似于社交媒体的应用程序所有关于账单的数据将作为帖子显示在另一个应用程序中以及评论选项。当另一个应用程序用户添加评论时(他们的电话号码和消息)cmets 将添加一个子节点到请求节点,我需要检索请求节点的所有子节点并将其显示在我的应用程序中。每当向其中添加新子节点时,我都需要检索请求节点的 c 子节点
-
@RetroModernGamer 只是将观察代码放在 viewwillappear 方法中。
-
@RB's 不确定您的评论对问题的意义,但移动它不会影响问题。
-
@Jay 我正在继续观察来自 firebase retro 的数据,每次我建议他将观察代码放入
willappear方法时都需要调用该数据,因此每次它都会调用并获取该数据.
标签: ios swift firebase firebase-realtime-database