Firestore получает данные массива с индексом 0 - PullRequest
0 голосов
/ 08 марта 2019

Ниже у меня есть некоторые данные в пожарном магазине. enter image description here

У меня есть массив в поле _geoloc. Каждый из этих индексов имеет координаты широты и долготы. Поэтому, используя SWIFT, я хочу иметь возможность получать координаты lat и lng только по индексу 0 и передавать их по отдельности в строку. Я занимался исследованиями в течение нескольких дней, и я застрял. Я попытался создать новый массив строк или массив AnyObject, и я просто застрял с получением нужных мне данных по индексу 0 и передачей только этих двух координат широты / долготы в строковые значения. У меня есть несколько неудачных фрагментов кода, которые я могу опубликовать.

Вот фрагмент того, что я пытался сделать: (Я действительно новичок в Firebase, поэтому код немного уродлив, поскольку я просто пытаюсь это выяснить)

        Firestore.firestore().collection("users").document("626").getDocument { (document, error) in
        if let document = document {
//            let geo_array = document["_geoloc"]

            var yourArray = [String]()
           // let geo_location = [geo_array] as [AnyObject]
            let array: [Any] =  document["_geoloc"] as! [Any]
            let tmpArray = array.map({ return String(describing: $0)})
            let string = tmpArray.joined(separator: ",")
           yourArray.append(string)

            print(yourArray[0])

Ответы [ 2 ]

1 голос
/ 09 марта 2019

Вам просто нужно привести ваш объект из Any в массив словарей и получить первое свойство:

Firestore.firestore().collection("users").document("626").getDocument { document, error in
    if let document = document {
        var yourArray: [String] = []    
        if let location = (document["_geoloc"] as? [[String:Double]])?.first,
            let latitude = location["lat"],
            let longitude = location["lat"] {
            let coordinate2d = CLLocationCoordinate2D(latitude: latitude, longitude: longitude) 
            yourArray.append("Latitude: \(location.latitude), Longitude: \(location.Longitude)")
        }
    }
}
0 голосов
/ 09 марта 2019

Может быть, сначала объявите это:

  var firstPositionValues = [AnyObject]()

Затем получите это так:

let db = Firestore.firestore().collection("users").document("626")

 db.getDocument { (document, error) in
        if let document = document {

            let geo_location = document["_geoloc"] as [AnyObject] // <- this is all of them in the document
            var initialValues = geo_location[0] // <- here are your lat and lng at position 0
             self.firstPositionValues = initialValues

        }

Надеюсь, я правильно понял, удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...