두 개의 다른 Firebase 테이블에서 데이터를 가져 오려고합니다.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
}
}
내가 ID로 이미지를 검색 할 수 = 1되어 다음 내 구현 게시에 해당하는 이미지 검색해야 : 여기에 테이블의 구조
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
(으)로 보낼 수 없습니다. 다음은 게시물 ID == 1 인 retrieveImagesForPost
호출의 결과입니다.
pImages
called
<TestProject.Image: 0x7f9551e82000>
<TestProject.Image: 0x7f955466a150>
이미지는 completion handler
이 호출 된 후에 검색됩니다. 나는 post에 설명 된대로 dispatch groups
과 semaphores
접근 방식을 시도했습니다. 그러나 결과는 여전히 동일합니다. completion handler
을 Firebase에서 모든 이미지를 가져올 때까지 기다리는 방법은 무엇입니까?
!? – Learn2Code
3 개 노드 (관계)에 가입하기 위해 기능을 변경해야 않는 방법 – Learn2Code