【问题标题】:Location issue from API来自 API 的位置问题
【发布时间】:2017-04-26 16:48:55
【问题描述】:

我在尝试从 api 获取坐标时遇到问题

我正在尝试创建一个包含所有 URL 的常量类,之后我创建了另一个名为 location 的类,包括两个变量纬度和经度,我创建了一个函数来获取主控件中的纬度和经度并将其保存到位置类,所以我可以在常量类的 url 中使用它

问题是如果我尝试打印经纬度坐标 从函数中它正确显示在输出中但是当我尝试在常量类中使用它时显示nil

我的常量类

import Foundation
 import Alamofire

 let Base_Url = "http://api.openweathermap.org/data/2.5/weather?"
  let lats = "lat="
  let lons = "&lon="
  let AppId = "&appid=951191ec976939570dc1aa8e0b5ed6bd"
  var lat = locationClass.sharedinstance.lat
   var lon = locationClass.sharedinstance.lon
    let CurrentWeatherUrl = "\(Base_Url)\(lats)37.785834000000001\(lons)-122.406417\(AppId)"

   let FourCastWeatherUrl = "http://api.openweathermap.org/data/2.5/forecast/daily?lat=21.5169444&lon=39.2191667&cnt=10&appid=951191ec976939570dc1aa8e0b5ed6bd"

  typealias DownloadCompleted = () -> ()

位置类

import CoreLocation

  class locationClass {
static var sharedinstance = locationClass()
private init () {}
var lat: Double!
var lon: Double!
   }

获取经纬度的函数

func currentLocationAuth(){
    if CLLocationManager.authorizationStatus() == .authorizedWhenInUse{
        currentlocation = locationmanager.location
        locationClass.sharedinstance.lat = currentlocation.coordinate.latitude
        locationClass.sharedinstance.lon = currentlocation.coordinate.longitude
        print(locationClass.sharedinstance.lat,locationClass.sharedinstance.lon)
    }else{
        locationmanager.requestWhenInUseAuthorization()
            currentLocationAuth()
    }

为什么当我尝试打印主控件显示的值时,但当我尝试在显示为空的常量类中使用它时

【问题讨论】:

  • 我认为如果您在 currentLocationAuth 方法之后访问 lat long 变量,这应该可以正常工作

标签: ios swift3 ios10 core-location


【解决方案1】:
  1. 我不太清楚你所说的常量类是什么意思……但是函数或初始化方法必须触发/初始化这些常量。如果发生这种情况你的单例 locationClass 被加载到内存中,那么显然你会得到nil

  2. 所以建议是在喂你的 long/lat 之前简单地调用:locationClass.sharedinstance,这样它就会初始化你的单例。

此外,在 Swift 3 中,约定是简单地使用 'shared' 而避免使用 'sharedInstance'

【讨论】:

  • 感谢@honey,我所做的是我在确实出现的函数中调用了该函数,我发现它获得了可选值,这就是链接返回错误的原因,所以我添加了!现在可以正常使用了
猜你喜欢
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多