2016-09-28 2 views
0

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?

+0

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. –

Antwort

1

Sie versuchen viel zu früh auf den Standort zuzugreifen. Sie müssen die Delegatenmethode locationManager:didUpdateLocations: implementieren. Es wird aufgerufen, wenn ein Standort verfügbar ist.

Wenn Sie nur den einen Standort möchten, können Sie innerhalb der Delegate-Methode stopUpdatingLocation aufrufen.

+0

das hat funktioniert! Darf ich fragen, ob es etwas Ähnliches für den Kalender gibt, nachdem ich um Erlaubnis gefragt habe, auf den Kalender zuzugreifen. Ich möchte Kalenderereignisse anzeigen, aber sie werden nicht angezeigt, wenn ich die Ansicht verlasse und wieder darauf zugreife. – Lara

+0

Das ist eine ganz andere Frage. Ich würde vorschlagen, eine neue Frage mit allen relevanten Code und Details zu diesem Problem zu veröffentlichen. – rmaddy

+0

Ich entschuldige mich dafür, dass ich bereits getan habe und vielen Dank für Ihre Hilfe. http://stackoverflow.com/questions/39772054/how-to-know-when-calendar-finishes-loading – Lara

Verwandte Themen