2017-07-19 30 views
0
的Array

讓我們在前端我有用戶ID的數組說,從另一個數據源中提取出來,IE:斯威夫特3火力地堡 - 返回所有用戶有一個ID從標識

let userIdArray = ["123456", "123457", "123458", "123459"] 

我需要查詢我的Firebase數據庫,返回具有該數組中某個ID的所有用戶。我會如何去做這件事?我是否必須爲每個ID創建一個新的查詢?這可能會導致過度徵稅,因爲陣列中的用戶數可能高達20-30個ID。

回答

2

以下代碼將以最快的方式循環遍歷所有userID,因爲它不會等到1次下載完成。我創建了一個調度組,然後在下載數據之前進入組,並在數據完成下載後離開組。之後,group.notify會在循環結束時通知您。

func getUserIds() { 

let userIdArray = ["123456", "123457", "123458", "123459"] 
let group = DispatchGroup() 

for singleUser in userIdArray{ 
group.enter() 
    ref.child("insertpath/\(singleUser)").observeSingleEvent(of: .value, with: { (snapshot) in 
    // Get user value 
    let value = snapshot.value as? NSDictionary 
    group.leave() 
    }) { (error) in 
    print(error.localizedDescription) 
    group.leave() 
    } 
} 

group.notify(queue: .main) { 
print("loop finished") 
    } 
    } 
} 
+0

是的!謝謝你,我正在尋找派遣,我今天早些時候閱讀了這篇文章,並且被拖延了,失去了它。謝謝! –

+0

@ErickMaynard yea關於調度的一些答案看起來很辛苦,這個例子使它看起來很容易:)祝你好運 –

+0

完美的例子,謝謝@ErickMaynard! – DJDMorrison

相關問題