CLLocationManager.location is nil

2019-03-27 08:40发布

this is my locationManager init method:

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

after calling this method this line

println(self.locationManager.location)

prints nil why is that? it worked for me well at the past i just made few changes in my app and it doesn't work well now..

2条回答
在下西门庆
2楼-- · 2019-03-27 09:22

1) CLLocation location documentation - The value of this property is nil if no location data has ever been retrieved.

2) You've set the delegate for CLLocationManager. Why not implement locationManager:didUpdateLocations: and print the latest retrieved location from inside?

3) Are you using a simulator or a real device? Bear in mind that if you are using a simulator you may need to enable simulate location:

Xcode location Dropdown

You can also find a Custom Location option in: - Simulator -> Debug -> Location -> Custom Location...

查看更多
冷血范
3楼-- · 2019-03-27 09:24

As of iOS 8 requestAlwaysAuthorization is ignored if you do not provide a string for NSLocationAlwaysUsageDescription in your Info.plist.

Link to documentation

查看更多
登录 后发表回答