Firestore在索引0处获取数组数据

时间:2019-03-08 20:59:06

标签: swift firebase google-cloud-firestore

下面我在Firestore中有一些数据。enter image description here

我在_geoloc字段中有一个数组。这些索引中的每一个都有纬度和经度坐标。因此,使用SWIFT,我希望只能获取索引0处的经纬度坐标,并将它们分别传递给字符串。我已经研究了好几天,被困住了。我试图创建一个新的字符串数组或一个AnyObject数组,但我只是卡住了在索引0处检索所需的数据,并且仅将这2个经/纬度坐标传递给字符串值。我有几个失败的代码片段可以发布。

以下是我尝试执行的操作的摘要:(我真的是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])

1 个答案:

答案 0 :(得分:1)

您只需要将对象从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)")
        }
    }
}