CLLocationManager.location 为零

Posted

技术标签:

【中文标题】CLLocationManager.location 为零【英文标题】:CLLocationManager.location is nil 【发布时间】: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 委托方法之前,您不应尝试访问该位置 【参考方案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

【讨论】:

以上是关于CLLocationManager.location 为零的主要内容,如果未能解决你的问题,请参考以下文章