Все, чего я пытаюсь добиться, - это чтобы посты внутри моего радиуса добавлялись в представление коллекции. В настоящее время я получаю все postId
, когда пользователь вводит радиус, но ничего не добавляется в представление коллекции, и я не могу понять, почему. Любая помощь очень ценится.
var posts = [Post]()
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let userLocation: CLLocation = locations[0] as CLLocation
let currentUserLocation = userLocation
let circleQuery = geoFire?.query(at: currentUserLocation, withRadius: 100.0)
_ = circleQuery?.observe(.keyEntered, with: { (key, location) in
guard let user = self.user else { return }
let ref = Database.database().reference().child("posts").child(key)
ref.observeSingleEvent(of: .value, with: { (snapshot) in
guard let dictionaries = snapshot.value as? [String: Any] else { return }
var post = Post(user: user, dictionary: dictionaries)
post.id = key
self.posts.append(post)
self.posts.sort(by: { (post1, post2) -> Bool in
return post1.creationDate.compare(post2.creationDate) == .orderedDescending
})
}, withCancel: { (error) in
print("There was an error getting the posts:", error)
})
})
}
fileprivate func fetchPostUserIds() {
Database.database().reference().child("users").observe(.value, with: { (snapshot) in
guard let userIdsDictionary = snapshot.value as? [String: Any] else { return }
userIdsDictionary.forEach({ (key, value) in
let uidKey = key
self.geoFireRef = Database.database().reference().child("posts").child(uidKey)
self.geoFire = GeoFire(firebaseRef: self.geoFireRef)
})
}) { (err) in
print("Failed to get user Id", err)
}
}