我試圖從兩個不同的Firebase表格中提取數據。下面是表的結構:我需要檢索相應的發佈與ID = 1。以下是我實施檢索圖像圖像通過在iOS中加入表格從Firebase提取數據
Post {
1{
pImages{
i1:true
i2:true
}
}
2{
pImages{
i3:true
}
}
}
Images{
i1{
iUrl : ....
pId : 1
}
i2{
iUrl :...
pId : 1
}
i3{
iUrl:....
pId : 2
}
}
:
func retrieveImagesForPost(postId: String,completion: (result: AnyObject?, error: NSError?)->()){
var imgArray:[Image]=[]
let postsRef = self.ref.child("post")
let imagesRef = self.ref.child("image")
let postImagesRef = postsRef.child(postId).child("pImages");
postImagesRef.observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in
for item in snapshot.children{
imagesRef.child(item.key).observeSingleEventOfType(.Value, withBlock: { (snap) in
let image = Image(snapshot: snap)
print(image)
imgArray.append(image)
})
}
print(snapshot.key)
print("called")
completion(result:imgArray, error:nil)
})
}
但是,問題是我無法將imgArray
中的所有圖像發送至completion handler
。以下是調用retrieveImagesForPost
後的輸出id = 1。
pImages
called
<TestProject.Image: 0x7f9551e82000>
<TestProject.Image: 0x7f955466a150>
在調用completion handler
後檢索圖像。我嘗試了dispatch groups
和semaphores
方法,如下面的post所述。但結果仍然相同。我如何讓completion handler
等待所有圖像從Firebase中獲取?
請問你的功能變化,我會需要火力地堡 – Learn2Code
加入3個節點(關係),如果(反== snapshot.childrenCount)拋出一個錯誤!? – Learn2Code