When my listener is called for my array it returns an empty array instead of the correct elements, why is this?
Model:
var friendList = [User]()
var removeFriendListener: ListenerRegistration!
func addFriendObserver(_ update: @escaping () -> Void) {
removeFriendListener = CURRENT_USER_FRIENDS_REF.addSnapshotListener{ snapshot, error in
self.friendList.removeAll()
guard error == nil else {
#if DEBUG
print("Error retreiving collection")
#endif
return
}
for document in snapshot!.documents {
let id = document.documentID
self.getUser(id, completion: { (user) in
self.friendList.append(user)
})
}
update()
}
}
View controller:
FriendSystem.system.addFriendObserver { () in
FriendSystem.system.friendList.sort(by: {$0.username < $1.username})
self.tableView.reloadData()
print(FriendSystem.system.friendList)
}
getUseris also asynchronous, if that's the case, you should also wait for each and everygetUsercalls before callingupdate.