ios - 从 firebase 实时数据库中检索当前用户(Swift 4/5)
问题描述
我想让我当前的用户名显示在导航栏上。
这是使用最新版本的 Swift (5) 和最新版本的 Firebase for iOS (6.3.0)。
这是我拥有的数据库。当前用户是“Rishabh”
rishabhmessage-cd077
users
-LhfNh3w6jYW4t71y2BM
email: "J@j.com"
name: "Jon"
-LhkGgXlWOUaZiR3PruD
email: "R@r.com"
name: "Rishabh"
let uid = Auth.auth().currentUser?.uid
Database.database().reference().child("users").child(uid!).observeSingleEvent(of: .value, with: {
(snapshot) in
print("1")
if let dictionary = snapshot.value as? [String: AnyObject] {
print("2")
self.navigationItem.title = dictionary["name"] as? String
}
}, withCancel: nil)
这应该为名称为“Rishabh”的当前用户更新导航栏的标题。我添加了一些用于调试的打印语句。print("1") 显示在控制台中,而 print("2") 不显示。
解决方案
snapshot.value 要么是 nil,要么不是类型:[String:AnyObject]。我要做的是打破 if let 字典行,然后看看 snapshot.value 是什么
推荐阅读
- intellij-idea - 在 pubspec.yaml 中导入 geoloaction 包时出错
- android - 播放 mediaFile 时权限被拒绝
- python - 在 python 3.7 中,为什么我的变量在我没有分配任何新内容的情况下被覆盖?
- mysql - 为每个用户选择一个值,即使没有 sql
- python - 使用 PyHive 和 SqlAlchemy 创建表
- python - tf.train.Saver 中的 var_list 是什么意思?
- php - Centos 7, PHP 7.2 权限被 Apache2.4 拒绝
- azure - 在 Azure Active Directory 中注册应用以生成客户端 ID
- javascript - 如何使用 Jest 和新的 React lazy 16.6 API 测试快照
- java - 自动将 jarfile 从 maven 目标移动到其他目录