2017-06-22 15 views
3

Firebaseからデータを取得する際に問題があります。Firebaseが自動IDより下のデータを取得Swiftで

JSONのすべてのcontactNameデータを自動IDで読み取り、UIPickerViewに追加したいとします。ここで

は私のJSONツリー(使用childByAutoId()) enter image description here

であり、ここに私のスウィフトコード

dbRef = Database.database().reference() 

dbRef.child("user").child("contacts").queryOrdered(byChild: "contactName").observeSingleEvent(of: .value, with: {(snapshot) in 

    for snap in snapshot.children { 

     let userSnap = snap as! DataSnapshot 

     let contactName = userSnap.value as? String 

      self.pickOption.append("\(contactName)") 
     } 
    }) 

である。しかし、結果は私にすべてゼロのデータを示しています...このようになります。

enter image description here

私はそれをどのように修正することができ..?

+0

はuseSnap.valueを記録してみてください。あなたは何が問題なのか分かります – rv7284

答えて

2

私は自分自身を解決しました!

しかしまず第一に、私はUIPickerViewを使用しないことに決めました。

私がしたいことは、自動IDの下にデータを追加することです。

私がこの問題を解決するための良いアルゴリズムであるわからないんだけど、とにかく、私はそれを作った:)

dbRef.child("user/contacts/").observe(.value, with: {(snapshot) in 

    if let result = snapshot.children.allObjects as? [DataSnapshot] { 

      for child in result { 

       let orderID = child.key as String //get autoID 

       self.dbRef.child("user/contacts/\(orderID)/contactName").observe(.value, with: { (snapshot) in 

        if let nameDB = snapshot.value as? String { 

         if self.debtorName == nameDB { 

          self.dbRef.child("user/contacts/\(orderID)").updateChildValues(data) 
         } 
        } 
       }) 
      } 
     } 
    }) 
関連する問題