2016-06-09 17 views
0

我昨天问了一个问题,标记为重复,当我更新问题时,它不是无标记的。所以我在这里再次问(根据stackoverflow的建议)。Firebase/Swift queryOrder然后匹配值

我想通过firebase中的多个值进行排序。我知道这是不可能的,但我用另一种语言给出了一个例子,这个例子对于如何以正确的方式来做这件事只有一半的帮助。无论如何,我试图按照这里给出的例子Query based on multiple where clauses in firebase

这是我的火力

room 
    -KJe22sduQMz1DIs_DH6 
     allowedParticipants: 
     14 
    createdBy: 
     "Mr Tester" 
    members: 
     "nmeMYnnSatRch5qKPJKIe7jEOLy2" 
    participating: 
     true 
    status: 
     "seedling" 
    theme: 
     "Cats" 
    totalNumberOfMembers: 
     1 

结构,这是我试图去上班

ref.queryOrderedByChild("status").queryStartingAtValue("active").queryEndingAtValue("active").observeEventType(.Value) { (snapshot: FIRDataSnapshot) in 

    let themeOfEvent = snapshot.value 

    if themeOfEvent?.value == pickedTheme { 

     print("foo") 

    } 
} 

可能有人请张贴有用的评论或回答来帮助我的代码? 谢谢

回答

0

我能得到帮助

这工作

func listOfPossibleCompetitionsFromFirebase(){ 

    let createdRoomRef = firebase.child("room") 
    createdRoomRef.queryOrderedByChild("status").queryStartingAtValue("active").queryEndingAtValue("active").observeEventType(.Value) { (snapshot: FIRDataSnapshot) in 

     var themeCount = 0 

     self.listOfOpenComps.removeAll() 
     if let tmp = snapshot.value as? [String:AnyObject] { 
      let keys = tmp.keys 

      for key in keys { 

       if let roomDetails = (tmp[key] as? [String:AnyObject]) { 

       if let themeOfEvent = roomDetails["theme"] as? String where themeOfEvent == pickedTheme { 
        themeCount += 1 
        self.listOfOpenComps.append(key) 
       } 

       } 
      } 
     } 

     dispatch_async(dispatch_get_main_queue(), { 
      self.tableView.reloadData() 
     }) 

     print("rooms count: \(themeCount)") 



    } 




}