Хотите загрузить профили пользователей в tableView, используя Firebase и GeoFire - PullRequest
0 голосов
/ 19 мая 2018

Я работал над приложением ios, которое использует Firebase и GeoFire.Я был в состоянии хранить пользовательские координаты, используя GeoFire в Firebase.Сейчас я пытаюсь загрузить данные пользователя в таблицу с помощью GeoFire, но безуспешно.Без Geofire я смог загрузить все пользовательские данные в таблицу, но теперь он просто показывает пустую таблицу.Кто-нибудь, пожалуйста, дайте мне несколько советов?

var myQuery: GFQuery?
var geoFireRef: DatabaseReference?
var geoFire: GeoFire?
var user = Auth.auth().currentUser

var filteredUsers = [Users]()

var users = [Users]()

var isSearching = false

override func viewDidLoad() {
    super.viewDidLoad()


    geoFireRef = Database.database().reference(fromURL: "https://yala-2018.firebaseio.com/").child("user_locations")

    geoFire = GeoFire(firebaseRef: geoFireRef!)

    let userLat = UserDefaults.standard.value(forKey: "current_latitude") as! String
    let userLong = UserDefaults.standard.value(forKey: "current_longitude") as! String
     let location:CLLocation = CLLocation(latitude: CLLocationDegrees(Double(userLat)!), longitude: CLLocationDegrees(Double(userLong)!))

     myQuery = geoFire?.query(at: location, withRadius: 100)

    myQuery?.observe(.keyEntered, with: { (key, location) in

        if key != Auth.auth().currentUser?.uid {

        // print("KEY:\(String(describing: key)) and location:\(String(describing: location))")


        let ref = Database.database().reference(fromURL: "https://yala-2018.firebaseio.com/").child("Users").child(key)

        ref.observeSingleEvent(of: .value, with: { (DataSnapshot) in


            if let dictionary = DataSnapshot.value as? [String: AnyObject] {
                let user = Users()
                user.name = DataSnapshot.key


               // user.setValuesForKeys(dictionary)

                user.name = dictionary["name"] as! String
                user.age = dictionary["age"] as! String
                user.sex = dictionary["sex"] as! String
                user.profileImageUrl = dictionary["profilePicUrl"] as! String
                self.users.append(user)
                print(user.name, user.age, user.profileImageUrl)
                DispatchQueue.main.async(execute: {
                    self.tableView.reloadData()
                })

            }
        })
        } else {
            print("cannot retrieve users based on location")
        }
    })

    tableView.dataSource = self
    tableView.delegate = self
    searchBar.delegate = self
    searchBar.returnKeyType = UIReturnKeyType.done

    tableView.reloadData()

}
...