2017-04-12 79 views
0

我试图从Firebase检索用户信息。Firebase无法从字典中获得价值

rk70HDmNSGfugTcIbTdAKhKXE4K2 =  { 
    Email = "[email protected]"; 
    UserID = rk70HDmNSGfugTcIbTdAKhKXE4K2; 
    Username = "Johnny_Bravo"; 
}; 

这是我检索的快照。 我想达到用户的电子邮件,但我得到一个崩溃由于零值

func retreiveUsers(){ 

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

     if let fetchedUser = snapshot.value as? NSDictionary { 

      print(fetchedUser["Email"]) 

     } 
    }) 
} 

什么是错的?

+0

能否请您添加乌尔数据库结构的屏幕截图,显示的是databaseRef –

回答

1

如果添加更多信息会更好。我写了评论。

但我认为,这个问题是,databaseRef.child(“用户”)将获取所有用户节点。您需要添加.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"]) 
     }  
    } 
}) 

试试这个

希望它可以帮助

+0

那么这里你去 –

+1

通过使用你的方法,我得到它的工作。但是,我是一个真正的noob在迅速和firebase,因此,你能描述发生了什么事情。 –

+0

@HussainMustafa使用.child(“用户”),您将访问所有用户节点。不是特定的用户。因此,在“for”周期中,您正在查看项目。然后获取每个用户快照并从中获取数据。请将其标记为答案,以便它可以帮助其他人 –