我正在嘗試訪問用戶的位置以顯示天氣數據。我正在使用此代碼:我無法獲得許可後的位置數據
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
。當我去設置它說我有權訪問數據,但我沒有得到它,除非我關閉應用程序並再次打開它。 現在有辦法獲得位置嗎?我做錯了什麼?
你必須定義一個'CLLocationManagerDelegate'並等待位置更新(在'locationManager:didUpdateLocations:'方法中)。這種方法會被多次調用,每一個都有更高的準確性。 **有**你想獲得你的'CLLocation'實例。 –