在 Firestore 中保存一个 CLLocationCooridnate2D 数组

Save a CLLocationCooridnate2D array in Firestore

我正在尝试保存一个 CLLocationCoordinate2D阵列到 Firestore,但我收到错误:

'FIRInvalidArgumentException', reason: 'Unsupported type: NSConcreteValue'

而且我真的不知道如何执行此操作。

在代码的顶部我有这个:

var locations: [CLLocationCoordinate2D] = []

然后在 'save' 按钮中。我有这个代码:

//Document Reference properties
        var _: DocumentReference = self.db
            //Collection into Subcollection & Documents
            .collection("rastad").document(authentication!)
            .collection("promenad").addDocument(data:
                //Insert first values
                ["Dog": txtfield_dog.text!,
                 "Person": txtfield_person.text!,
                 "What": txtfield_what.text!,
                 "Date": txtfield_Datum.text!,
                 "Time": txtfield_Time.text!,
                 "Timer": txtfield_timer.text!,
                 "Kilometers": txtfield_km.text!,
                 "Locations": locations
                ], completion: { (err) in
                    if err != nil
                    {
                        print("Error adding info-details")
                        return
                    }
                    else
                    {
                        print("Succeded!")
    }

那么,我该如何解决这个问题呢?如何将 CLLocationCoordinate2D 数组插入 Firestore?而且,我以后怎么找回它?我真的很感激任何帮助!谢谢!

编辑:也许这个错误对你来说很清楚,但是很好。这对我来说并不清楚,这就是我当然要问这个问题的原因。如果我知道答案,我不会回答这个问题。而不是不喜欢并离开线程,你至少可以发表评论并告诉我不喜欢的原因。所以,我想我的问题会成立。

具体来说,Firebase 不知道 CLLocationCoordinate2D 对象是什么。但它确实知道什么是数组,也知道什么是字符串、整数和双精度数。所以你必须将你的位置数组解析成它可以理解的东西。您可以将该值存储在 Firestore 中,因为坐标实际上只是一对双精度值。您可以通过多种方式执行此操作,但最简单的方法可能是拆分位置数组,一种用于纬度值,一种用于经度。例如,您可以使用 let latitudes = locations.map({ [=12=].latitude }),经度也是如此。然后在 Firestore 中,您可以将其更新为:

                 "Person": txtfield_person.text!,
                 "What": txtfield_what.text!,
                 "Date": txtfield_Datum.text!,
                 "Time": txtfield_Time.text!,
                 "Timer": txtfield_timer.text!,
                 "Kilometers": txtfield_km.text!,
                 "LocationLatitudes": latitudes,
                 "LocationLongitudes": longitude,
                ]

应用反向逻辑进行检索。您将需要遍历纬度和经度数组并将其组合成一个包含 CLLocationCoordinate2D 个对象的数组。