【问题标题】:Firebase cannot get value from DictionaryFirebase 无法从 Dictionary 中获取价值
【发布时间】:2017-09-07 22:53:31
【问题描述】:

我正在尝试从 firebase 检索用户信息。

rk70HDmNSGfugTcIbTdAKhKXE4K2 =     {
    Email = "johnny_bravo770@gmail.com";
    UserID = rk70HDmNSGfugTcIbTdAKhKXE4K2;
    Username = "Johnny_Bravo";
};

这是我检索到的快照。 我想获得用户的电子邮件,但由于 nil 值而崩溃

func retreiveUsers(){

    databaseRef.child("Users").observeSingleEvent(of: .value, with: { (snapshot) in

        if let fetchedUser = snapshot.value as? NSDictionary {

            print(fetchedUser["Email"])

        }
    })
}

怎么了?

【问题讨论】:

  • 能否请您添加您的数据库结构的屏幕截图并显示什么是databaseRef

标签: swift firebase firebase-realtime-database data-retrieval


【解决方案1】:

如果您添加更多信息会更好。我已经在评论中写了。

但我认为,问题在于 databaseRef.child("Users") 将获取所有用户节点。您需要添加.child(USER_ID) 或执行以下操作:

databaseRef.child("Users").observeSingleEvent(of: .value, with: { (snapshot) in

    for item in snapshot.children {
        let fetchedUserSnapshot = item as! FIRDataSnapshot
        if let fetchedUser = fetchedUserSnapshot.value as? [String: Any] {
            print(fetchedUser["Email"])
        }      
    }
})

试试这个

希望对你有帮助

【讨论】:

  • 来吧
  • 通过使用你的方法,我得到了它的工作。但我是 swift 和 firebase 的真正菜鸟,所以你能描述一下发生了什么吗?
  • @HussainMustafa 使用 .child("Users") 您将转到所有用户节点。不是特定用户。因此,在“for”循环中,您正在查看项目。然后获取每个用户快照并从中获取数据。请将其标记为答案,以便对其他人有所帮助
  • @HussainMustafa raywenderlich.com/139322/firebase-tutorial-getting-started-2 这是一个很好的教程。您可以在文章末尾找到完成的代码。下载并查看它。它应该对你有很大帮助
  • @VladPulichev 非常感谢,我已将您的回复标记为答案。我是堆栈溢出的新手,所以我不知道如何将您的回复标记为答案。
猜你喜欢
  • 1970-01-01
  • 2018-11-30
  • 2020-09-26
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多