0
我有一個帖子類,用於使用來自Firebase的發佈數據填充集合視圖。
我在收到一些用戶數據時遇到了麻煩,所以我試圖將觀察者放在帖子類中。
這似乎工作正常,但從Firebase獲取數據有點延遲,因此似乎在完成Firebase調用之前完成init()函數。
這是後級:如何從Firebase調用自定義類功能中的數據
class Post {
var _comment1Text: String?
var _comment1User: String?
var _comment1Name: String?
init(comment1Text: String, comment1User: String, comment1Name: String) {
self._comment1Text = comment1Text
self._comment1User = comment1User
self._comment1Name = comment1Name
if self._comment1User != "" {
DataService.ds.REF_USERS.child(self._comment1User!).observeSingleEventOfType(.Value, withBlock: { userDictionary in
let userDict = userDictionary.value as! NSDictionary
self._comment1Name = userDict.objectForKey("username") as? String
})
}
print(self._comment1Text)
print(self._comment1Name)
}
}
如果我的火力調用中打印,它的工作原理。
但是,如果我之後打印,出於某種原因,comment1name尚未填充。
有沒有辦法讓self._comment1Name包含來自Firebase的數據以及時填充collectionView?
在此先感謝。
@Dravidian答案是一點。可能還有另一個問題。你的Post類是單身人士嗎?如果不是,您可能需要重新考慮您的整體策略。正如答案所示,Firebase是異步的,因此Firebase需要時間從互聯網檢索數據,並且在發生這種情況時總會有滯後。因此,在Firebase有時間檢索數據之前,您需要確保不使用數據。 Firebase數據僅在塊(封閉)內有效,因此,只有在數據返回後才能處理該數據。用一組對象做這件事會變得棘手。 – Jay
是的,當我讀到它是異步的,我知道該怎麼做。必須改變策略。 –