无法将坐标放入全局变量 [CLgeocoder, swift4]

Posted

技术标签:

【中文标题】无法将坐标放入全局变量 [CLgeocoder, swift4]【英文标题】:Having trouble putting in the coordinates in global variable [CLgeocoder, swift4] 【发布时间】:2020-07-17 06:05:52 【问题描述】:

我正在尝试创建一个可以查找日出时间的应用,并且我正在使用这个需要两个位置坐标的 Web API。

这是我获取纬度和经度的解决方案,但是它不会让我将坐标存储在变量中。(坐标必须是浮点数)

为什么不让我将这些数字放入变量中?还是有更好的实现方式?

   let lattitude: Float = 0.0000
   let longitude: Float = 0.0000


    let address = "Tokyo"
            CLGeocoder().geocodeAddressString(address)  placemarks, error in
                if let lat = placemarks?.first?.location?.coordinate.latitude
                    print("lattitude : \(lat)")
                    lattitude = lat

                
                if let lng = placemarks?.first?.location?.coordinate.longitude
                    print("longtitude : \(lng)")
                    longtitude = lng
                
            

【问题讨论】:

【参考方案1】:

您已将变量lattitudelongitude 指定为let。这些是常量,初始化后不能更改它们的值。将let 更改为var

另外一个问题是placemarks?.first?.location?.coordinate.latitudeplacemarks?.first?.location?.coordinate.longitude 返回双精度类型。您不能将双精度分配给浮点数。

您可以尝试将 lat/lng 转换为 Float。

lattitude = Float(lat)

longitude = Float(lng)

或者将 lattitudelongitude 变量更改为 Double 类型。

var lattitude: Double = 0.0000

var longitude: Double = 0.0000

【讨论】:

谢谢,这就是问题所在! 没问题!将来阅读和谷歌 xcode 给你的错误,他们会告诉你哪里错了。您也可以单击错误,有时会有一个“修复”按钮来解决您的问题。祝你好运!

以上是关于无法将坐标放入全局变量 [CLgeocoder, swift4]的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 CLGeocoder 快速获取正确的城市名称

Swift 中的 CLGeocoder - 使用 reverseGeocodeLocation 时无法返回字符串

无法从 CLGeocoder reverseGeocodeLocation 返回字符串

如何将组件对象放入合成 API 中的全局窗口变量中?

CLLocationManager 和 CLGeoCoder

如何等到 CLGeocoder 完成工作