2016-07-18 4 views
1

firebaseのスナップショットを利用しようとしましたが、特定の子にアクセスしようとすると出力はnullになります。あなたのスナップショットを辞書であるように見えますスナップショットの子値にアクセスするFirebase 2は、ヌルを生成します

var ref = FIRDatabaseReference.init() 

func loadData { 
    ref = FIRDatabase.database().reference(

    ref.child("Posts").child(postId).observeSingleEventOfType(.Value, withBlock: { snapshot in 

     print(snapshot.value?["PostText"] as! String) // Optional(<null>) 
     print(snapshot) 
     for child in snapshot.children { 

      if child.childSnapshotForPath("PostText").value == nil { 
       self.postText.text = "" 

      } else { 
       self.postText.text = child.childSnapshotForPath("PostText").value as? String // Optional(<null>) 

       print(child.childSnapshotForPath("PostText").value) 
      } 

     } 
    }) 
} 

プリントの出力(スナップショット)

Snap (84844) { 
Author = lGAV1KUhSCP8hnFiKY1N9lBPrmmst1; 
CommentsCount = 1; 
Group = 665555; 
ImageUrl = "http://i.telegraph.co.uk/multimedia/archive/03589/Wellcome_Image_Awa_3589699k.jpg"; 
PostText = "I like cakeh, but theijijijijijij truth is, it's too sweet. So SOMETIMES I dont eat it, but i LIKE CAKE."; 
} 

答えて

0

が。そして、あなたは辞書としてそれをキャストする必要があります。

func loadData { 
    ref = FIRDatabase.database().reference(

     ref.child("Posts").child(postId).observeSingleEventOfType(.Value, withBlock: { snapshot in 

      print(snapshot.value?["PostText"] as! String) // Optional(<null>) 
      print(snapshot) 
      let dict = snapshot.value as! Dictionary<String, AnyObject> 
      if let author = dict["Author"] as? String, commentsCount = dict["CommentsCount"] as? Int, group = dict["Group"] as? Int { 
       print("author \(author) commentsCount \(commentsCount), group: \(group)") 
      } 
     }) 
} 

がIMAGEURLとPostTextについても同じことを行い、彼らがString

としてキャストされなければなりません
関連する問題