2017-03-10 18 views
0

以下のクエリを使って、以下のスナップショットを取得しています。同じ名前の子供たちの価値を得る - Firebase Swift3

dbRef.child("users").queryOrdered(byChild: "username").queryStarting(atValue: text).queryEnding(atValue: text+"\u{f8ff}").observe(.value, with: { snapshot in }) 

しかし、私は、彼らがすべて同じキー(「ユーザ名」)を持っているので(つまり法案、ビリー、billykinsを)子供「ユーザ名」の値を反復処理する方法を考え出すのトラブルを抱えています。私はすべての名前を抽出し、名前の配列に入れようとしています。

Snap (users) { 
    fDrzmwRUt2guh3O8pc792ipyEqA3 =  { 
     username = bill; 
    }; 
    qyQkIOxSpXgQoUoh0QNvPlkQ1Mp1 =  { 
     username = billy; 
    }; 
    edSk54xSpXgQoYoh0QNvOlkQ1Mp3 =  { 
     username = billykins; 
    }; 
} 

これは私のスナップショットを取得し、それを反復しようとする私の機能です。ただし、ループがクラッシュします。

func findUsers(text: String) { 
     print("search triggered") 
     dbRef.child("users").queryOrdered(byChild: "username").queryStarting(atValue: text).queryEnding(atValue: text+"\u{f8ff}").observe(.value, with: { snapshot in 

     print(snapshot) 

     for i in snapshot.children{ 
      let value = snapshot.value as! Dictionary<String,String> 
      let username = value["username"] 
      print(username) 
      self.userList.append(username!) 
      print(self.userList) 
     } 
    }) { (error) in 
     print("searchUsers \(error.localizedDescription)") 
    } 
} 

ここではログの一部です。あまりにも長い投稿:

0x1002cg360 <+272>: adr x9, #268929    ; "value type is not bridged to Objective-C" 
0x1002cg364 <+276>: nop  
0x1002cg368 <+280>: str x9, [x8, #8] 
-> 0x1002cg36c <+284>: brk #0x1 
0x1002cg370 <+288>: .long 0xffffffe8    ; unknown opcode 
+1

クエリをorderbyの使用しますあなたのお名前は –

+0

まだ試しましたか? Firebaseのドキュメントは通常、適切な出発点です:https://firebase.google.com/docs/database/ios/lists-of-data#listen_for_child_events。もっと実践的なアプローチが必要な場合は、iOSのFirebaseコードラボを試してみてください。https://firebase.google.com/docs/samples/#codelabs –

+0

これは実際にスナップショットを取得する方法です。私はちょうど私の質問を編集しました。私はそれを言及すべきだった。 –

答えて

0

私が探していた解決策はここにあります。私は、ユーザ名を取得するために配列に子スナップショットを抽出し、その値によって、子スナップショットをループするために、大きなスナップショットをループするために必要な:

このポストから適応
func findUsers(text: String) { 
    print("search triggered") 
    dbRef.child("users").queryOrdered(byChild: "username").queryStarting(atValue: text).queryEnding(atValue: text+"\u{f8ff}").observe(.value, with: { snapshot in 

     print(snapshot) 

     if (snapshot.value is NSNull) { 
      print("not found") 
     } else { 

      var blaArray = [FIRDataSnapshot]() 

      for child in snapshot.children { 
       let snap = child as! FIRDataSnapshot //downcast 
       blaArray.append(snap) 
      } 

      for child in blaArray { 
       let dict = child.value as! NSDictionary 
       let username = dict["username"]! 
       print(username) 

      } 
    }) { (error) in 
     print("searchUsers \(error.localizedDescription)") 
    } 
} 

Get data out of array of Firebase snapshots

関連する問題