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 为零的主要内容,如果未能解决你的问题,请参考以下文章