Ich versuche, auf den Standort des Benutzers zuzugreifen, um Wetterdaten anzuzeigen. Ich verwende diesen Code:Ich kann die Standortdaten nach der Berechtigung nicht abrufen
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];
Die Sache ist ich die Pop-up bitten um die Erlaubnis bekommen aktuellen Standort zu verwenden. Ich akzeptiere, aber ich bekomme keinen Ort, sein Wert ist nil
. Wenn ich zu Einstellungen gehe, sagt es, dass ich die Erlaubnis habe, auf Daten zuzugreifen, aber ich bekomme es nicht, es sei denn, ich schließe die Anwendung und öffne sie wieder. Gibt es eine Möglichkeit, den Standort im Moment zu bekommen? Mache ich etwas falsch?
Sie müssen ein 'CLLocationManagerDelegate' definieren und warten, bis der Standort aktualisiert wird (in der Methode' locationManager: didUpdateLocations: '). Diese Methode wird mehrmals aufgerufen, jeder mit größerer Genauigkeit. ** Dort ** möchten Sie Ihre 'CLLocation'-Instanz erhalten. –