许可后我无法获取位置数据

时间:2016-09-28 16:39:47

标签: objective-c core-location

我正在尝试访问用户的位置以显示天气数据。我正在使用此代码:

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。当我进入设置时,它表示我有权访问数据,但除非我关闭应用程序并再次打开它,否则我无法获取数据。 目前有办法获得这个位置吗?我做错了吗?

1 个答案:

答案 0 :(得分:1)

您试图太快访问该位置。您需要实现locationManager:didUpdateLocations:委托方法。当一个位置可用时,它将被调用。

如果您只想要一个位置,可以在委托方法中调用stopUpdatingLocation