我有一個桌面視圖,我想填充firebase數據,也是我存儲在存儲中的圖像。用Firebase數據庫和存儲填充tableview?
我最初的遊戲計劃是運行一個觀察者到firebase,併爲快照中的每個項目填充一個firebase數據數組,並從存儲中以相同的捕捉名稱提取數據,並將它放在另一個數組中,然後在我的單元格中,我會用圖像數組的indexpath.row和數據數組中的數據填充圖像,它會匹配起來並變得很酷。
這次崩潰和燒燬是因爲從存儲下載圖像我想花費的時間比拉動信息長?和圖像數組被填充比數據慢,所以我得到一個崩潰,圖像[indexPath.row]超出範圍。
從數據庫和存儲中填充tableview的正確方法是什麼?
編輯:
我的火力點的數據是這樣的:
users
02938409283049829304
Category
Cats : true
Dogs: true
這就是我要怎樣做:
REF_USERS.child(currentUserUID).child("Category").observeEventType(.Value) { (snapshot: FIRDataSnapshot) in
self.categoriesArray = []
self.imagesArray = []
if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] {
for snap in snapshots {
self.categoryArray.append(snap.key)
let pictureRef = DataService.ds.REF_BASE_STORAGE.child(self.currentUserUID).child(String(snap.key))
pictureRef.dataWithMaxSize(9809898999098098 /* no idea what to put here*/) { (data, error) -> Void in
if (error != nil) {
print(error)
} else {
let picture : UIImage! = UIImage(data: data!)
self.imagesArray.append(picture)
print(self.imagesArray.count)
}
}
self.tableView.reloadData()
所以,我怎麼想的是讀取是:
轉到用戶並查看他們的類別。我期待發布它的名稱,所以我只是使用密鑰。密鑰名稱與保存在存儲器中的圖像完全相同,因此我使用該密鑰名稱從存儲器中抓取照片。
let pictureRef = DataService.ds.REF_BASE_STORAGE.child(self.currentUserUID).child(String(snap.key))
我從數據庫中的陣列和從存儲到另一個陣列將圖像添加數據,然後當我使細胞我只設置數據,以將圖像數據[indexPath.row]和圖像[indexPath.row]。當我做images.count和data.count,並且我有兩件事情時,我的圖片落後3,所以這就是我得到的圖像[indexPath.row]超出範圍錯誤我猜。
確實沒有一個正確的方法;有幾條路要走。這很大程度上取決於您的Firebase結構中的數據和圖像。你可以將它作爲文本包含在你的問題中嗎? – Jay
@Jay Yep它現在在那裏。我不知道我是不是這樣做的基礎。我只會一次向用戶顯示最多10張照片,所以我想我可能不需要處理緩存?任何指導表示讚賞,謝謝你。 – Noowoo