Firebase를 사용하여 데이터를 저장하고 있으며 클로저를 사용하여 데이터를 검색하려고 할 때 클로저가 끝나기 전에 항상 끝나고 돌아갑니다. 내 HeyUser 클래스에서 내 Firebase에서 Friend 키의 값을 가져 와서 클래스 속성에 저장하려고합니다. 그러나 클래스의 객체를 인스턴스화하려고하면 객체는 프렌드 키 값을 가져 오지 않고 인스턴스화됩니다. 폐쇄가 완료 될 때까지 인스턴스화 또는 함수 완료를 지연시킬 수 있는지 궁금합니다. 다음은 내 HeyUser 클래스의 코드입니다 :클로저가 완료되기 전에 함수가 돌아옵니다. Firebase
class HeyUser {
var Friends: [String] = [String]()
var username = PFUser.currentUser().username
var ref = Firebase()
var fRef = Firebase()
init() {
self.ref = Firebase(url: "https://hey-chat.firebaseio.com/").childByAppendingPath("users").childByAppendingPath(PFUser.currentUser().username)
self.fRef = self.ref.childByAppendingPath("friends")
self.getFriends()
}
func getFriends() {
self.fRef.observeSingleEventOfType(.Value, withBlock: { snapshot in
self.Friends = snapshot.value as [String]
print("TEST")
print(self.Friends.count)
})
}
}
관련 : http://stackoverflow.com/questions/27338575/force-asynchrounous-firebase-query-to-execute-synchronously/27345823#27345823 –