我正在尝试访问用户的位置以显示天气数据。我正在使用此代码:
if(self.locationManager == nil) {
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
}
// Check for iOS 8. Without this guard the code will crash with "unknown selector" on iOS 7.
if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
NSLog (@"ENTERING requestWhenInUseAuthorization",nil);
[self.locationManager requestAlwaysAuthorization];
}
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[self.locationManager startUpdatingLocation];
CLLocation *location = [self.locationManager location];
[self.locationManager stopUpdatingLocation];
NSString *latitude = [[NSNumber numberWithDouble:location.coordinate.latitude] stringValue];
NSString *longitude = [[NSNumber numberWithDouble:location.coordinate.longitude] stringValue];
问题是我弹出窗口要求允许使用当前位置。我接受,但我没有得到任何位置,其值为nil
。当我进入设置时,它表示我有权访问数据,但除非我关闭应用程序并再次打开它,否则我无法获取数据。
目前有办法获得这个位置吗?我做错了吗?
答案 0 :(得分:1)
您试图太快访问该位置。您需要实现locationManager:didUpdateLocations:
委托方法。当一个位置可用时,它将被调用。
如果您只想要一个位置,可以在委托方法中调用stopUpdatingLocation
。