Получить сообщения по postId из Firebase с Swift 4 - PullRequest
0 голосов
/ 20 ноября 2018

Все, чего я пытаюсь добиться, - это чтобы посты внутри моего радиуса добавлялись в представление коллекции. В настоящее время я получаю все 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)
        }
    }

Firebase Database

...