Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 请求用户名时,Firebase快照返回null_Ios_Swift_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Ios 请求用户名时,Firebase快照返回null

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:

我正在制作一个Instagram克隆,我想获得用户显示的用户名。信息在firebase的数据库部分,我试图通过快照来实现,但它总是返回

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此答案工作正常-在我自己的项目中经过测试,不会返回任何错误。