2017-08-16 9 views
1

私は比較的新しいSwiftプログラマーで、Firebaseを初めて使用していますので、専門用語の知識Firebaseデータベースからデータを取得するとき、「Snap(...)<null>」

データベース(電子メールとユーザー名)に格納されているユーザーに関するデータを取得しようとしています。

コードは、データベース内のユーザーIDを正常に検出します。ユーザIDは、ユーザ名と電子メールを含むディレクトリにナビゲートするために使用されます。これらの値はsnapshotに格納されます。

何らかの理由でsnapshotが表示された場合は、userIDが表示されますが、ディレクトリの内容(ユーザ名とパスワード)は<null>と表示されます。私は、アクセスしようとしているディレクトリからデータを取得しようとしているディレクトリが空ではないことを確信しています(usernameとemailが入っています)。私はsnapshotにユーザー名と電子メールを保存したいが、印刷はそれが正しく行われていないことを示し、理由を理解できない。ここ

私のコードブロックである:ここで Snap (ywU56lTAUhRpl3csQGI8W8WmQRf1) <null>

は、私が到達しようとしていたデータベースのエントリです:

func checkIfUserIsLoggedIn() { 
 
     if Auth.auth().currentUser?.uid == nil { 
 
      perform(#selector(handleLogout), with: nil, afterDelay: 0) 
 
     } else { 
 

 
      let uid = Auth.auth().currentUser?.uid; 
 
      Database.database().reference().child("Users").child(uid!).observeSingleEvent(of: .value, with: { (snapshot) in 
 
       
 
       print(snapshot) 
 
       
 
       if let dictionary = snapshot.value as?[String:AnyObject] { 
 
        self.userLabel.text = dictionary["name"] as? String 
 
       } 
 
       
 
       
 
      }, withCancel: nil) 
 
     } 
 
    }

、ここでは、コンソールに出力されているものですログにsnapshotI'm a new Stack Overflow user and don't have enough experience on the site to be allowed to embed images in posts, so this is the external link

お読みいただきありがとうございました。

+0

firebaseでは、コードに「ユーザ」を使用している間は小文字のユーザがあります。多分それは事実です。 – rv7284

答えて

0
if u want to get username or email then you make first the model class for 
Example:- 


class User: NSObject { 
    var name: String? 
    var email: String? 
} 

then user firebase methed observeSingleEvent 

    FIRDatabase.database().reference().child("user").child(uid).observeSingleEvent(of: .value, with: { (snapShot) in 
       if let dictionary = snapShot.value as? [String: Any]{ 
      // self.navigationItem.title = dictionary["name"] as? String 
       let user = User() 
        user.setValuesForKeys(dictionary) 
       self.setUpNavigationBarWithUser(user: user) 
       } 
      })` 
+0

返信いただきありがとうございます!私は 'let user = User()'と 'user.setValuesForKeys(dictionary)'を同じ場所に含めるようにコードを修正しましたが、問題は解決しません。他のアイデア?または、あなたのソリューションを正しく実装していないのですか? – aGhostyBabe

1

Firebaseであなたの参照が"users"にあるが、あなたはあなたのコード内で.child("Users")を使用しています。ルックアップが大文字と小文字をノードに一致することを確認します。私は、そのノードへの参照を作成し、それを書いたり読んだりするために使用することをお勧めします。

let usersRef = Database.Database().reference().child("users")


Snap (ywU56lTAUhRpl3csQGI8W8WmQRf1) <null>括弧内の部分は、あなたが観察しようとしているもののエンド・ノードを指します。ここではuid!を指します。

関連する問題