Ios 请求用户名时,Firebase快照返回null
我正在制作一个Instagram克隆,我想获得用户显示的用户名。信息在firebase的数据库部分,我试图通过快照来实现,但它总是返回Ios 请求用户名时,Firebase快照返回null,ios,swift,firebase,firebase-realtime-database,firebase-authentication,Ios,Swift,Firebase,Firebase Realtime Database,Firebase Authentication,我正在制作一个Instagram克隆,我想获得用户显示的用户名。信息在firebase的数据库部分,我试图通过快照来实现,但它总是返回 fileprivate func fetchUser() { guard let uid = Auth.auth().currentUser?.uid else { return } Database.database().reference().child("users").child(uid).observeSingleEvent(of:
fileprivate func fetchUser() {
guard let uid = Auth.auth().currentUser?.uid else { return }
Database.database().reference().child("users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
print(snapshot.value ?? "")
}) { (err) in
print("Failed to fetch user:", err)
}
}
代码格式的空格很奇怪,但这就是代码。我是不是把孩子们弄对了,还是怎么了
编辑:这里还有Firebase Db的快照。试试这个:
guard let uid = Auth.auth().currentUser?.uid else { return }
let reference = Database.database().reference()
reference.child("users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
guard let dictionary = snapshot.value as? [String: Any] else { return }
let username = dictionary["username"] as? String
print(username ?? "")
}, withCancel: nil)
试试这个:
guard let uid = Auth.auth().currentUser?.uid else { return }
let reference = Database.database().reference()
reference.child("users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
guard let dictionary = snapshot.value as? [String: Any] else { return }
let username = dictionary["username"] as? String
print(username ?? "")
}, withCancel: nil)
有些用户直接位于根目录下,有些用户位于
/users
下。您的代码只能读取/users
下的代码。解决方案是修复写入此用户数据的代码,将其写入一致的位置。坦白说,即使我在/users下有一个用户,它仍然显示null。重写代码以将所有用户置于/users之下会修复它吗?这是我第一次使用firebase,所以我很抱歉我们的数据结构不一致,这使得我们很难相信任何东西(因为我们不知道您的用户有哪个UID)。查看是否可以使用uid
的硬编码值来复制它,如果可以,请更新问题中的代码。这样可以更容易地看到实际发生的情况。问题中的代码适用于发布的结构(假设您正在/users节点中查找有效的uid),因此不清楚问题是什么。今后,请将Firebase结构作为文本,而不是链接或图像。链接中断,这将使问题无效。有些用户直接位于根目录下,另一些用户位于/users
下。您的代码只能读取/users
下的代码。解决方案是修复写入此用户数据的代码,将其写入一致的位置。坦白说,即使我在/users下有一个用户,它仍然显示null。重写代码以将所有用户置于/users之下会修复它吗?这是我第一次使用firebase,所以我很抱歉我们的数据结构不一致,这使得我们很难相信任何东西(因为我们不知道您的用户有哪个UID)。查看是否可以使用uid
的硬编码值来复制它,如果可以,请更新问题中的代码。这样可以更容易地看到实际发生的情况。问题中的代码适用于发布的结构(假设您正在/users节点中查找有效的uid),因此不清楚问题是什么。今后,请将Firebase结构作为文本,而不是链接或图像。链接中断,这将使问题无效。InstagramClone[71556:9641272]TIC读取状态[1:0x0]:1:57-您的解决方案返回此错误。这是我在网上找到的it@MasonBose您是否在AppDelegate中添加了配置Firebase的正确行,添加到了正确的.plist文件中并对用户进行了身份验证?@MasonBose此答案工作正常-在我自己的项目中进行了测试,并且没有返回任何错误。InstagramClone[71556:9641272]TIC读取状态[1:0x0]:1:57-您的解决方案返回此错误。这是我在网上找到的it@MasonBose您是否在AppDelegate中添加了配置Firebase的正确行,添加到了正确的.plist文件中,并对用户进行了身份验证?@MasonBose此答案工作正常-在我自己的项目中经过测试,不会返回任何错误。