【问题标题】:CLLocationManager.location is nilCLLocationManager.location 为零
【发布时间】:2015-01-21 11:47:40
【问题描述】:

这是我的 locationManager 初始化方法:

func initLocationManager() {
        seenError = false
        locationFixAchieved = false
        locationManager = CLLocationManager()
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestAlwaysAuthorization()
        locationManager.startUpdatingLocation()     
}

在这一行调用这个方法后

println(self.locationManager.location)

打印零 这是为什么?过去它对我很有效

【问题讨论】:

  • 您在哪里打印位置?在委托方法中?您是否在隐私设置中禁止您的应用定位?
  • 很遗憾我没有找到您所说的那些隐私设置,能否请您详细说明一下?
  • 设置应用程序->隐私->定位服务->您的应用名称
  • 好的,我检查了这个,它是允许的,而我仍然得到 nil.. 另一种解决方案?
  • 好的,我的问题的第二部分 - 你在哪里打印位置?在调用 didUpdateLocations 委托方法之前,您不应尝试访问该位置

标签: ios swift location cllocationmanager


【解决方案1】:

1) CLLocation location documentation - 如果没有检索到任何位置数据,则此属性的值为 nil。

2) 您已经为 CLLocationManager 设置了委托。为什么不实现locationManager:didUpdateLocations: 并从内部打印最新检索到的位置?

3) 您使用的是模拟器还是真实设备?请记住,如果您使用的是模拟器,您可能需要启用模拟位置:

您还可以在以下位置找到Custom Location 选项: - Simulator -> Debug -> Location -> Custom Location...

【讨论】:

    【解决方案2】:

    如果您没有在 Info.plist 中为 NSLocationAlwaysUsageDescription 提供字符串,则从 iOS 8 开始,requestAlwaysAuthorization 将被忽略。

    Link to documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 2017-02-12
      • 2017-06-08
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多