In Apples Dokumentation zeigen, dass sie diese Methode mit Corelocation zu verwenden, um GPS-DatenCore-Standort newLocation kann nicht auf Eigenschaft zuweisen
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
}
Dies ist zu ziehen Sie zu benachrichtigen, dass der GPS aktualisiert hat. newLocation wird GPS-Daten haben, die Sie benötigen, aber wenn ich eine Anweisung in diese Methode lege, um sie einer Eigenschaft zuzuweisen, wird noting geschrieben.
latitude = [NSString stringWithFormat:@"%f", newLocation.coordinate.latitude];
NSLog(@"%@", latitude);
Der NSLog oben in der Methode wird die richtigen Koordinaten zeigen. aber es scheint, dass die Daten verschwinden, wenn die Methode beendet ist. Die Eigenschaft "Breite" in meiner Klasse wird nicht zugewiesen. Vielleicht ist es ein Problem mit dem Umfang? Ich kann nichts davon zurückgeben und ich kann keine neue Position außerhalb der Methode sehen. Hat jemand einen Weg gefunden, um das zu umgehen?
EDIT: Ich bin mit Bogen und die Breite Eigenschaft ist stark. Brauche ich noch andere Attribute? Hier ist der Implementierungscode, mit dem ich die Eigenschaft mit importiere. (Breite ist eine Eigenschaft von LocationAwareness) beide diese nslogs zeigen Null
#import "ViewController.h"
#import "LocationAwareness.h"
@interface ViewController()
@end
@implementation ViewController
@synthesize location;
- (void)viewDidLoad
{
[super viewDidLoad];
self.location = [[LocationAwareness alloc] init];
NSLog(@"%@", location.latitude);
NSLog(@"%@", location.longitude);
}
Wie erklären Sie Breite Eigentum? –
@property (stark) NSString * latitude; –
In diesem Fall sollte self.latitude das Problem lösen, wie ich in meiner Antwort erwähnt habe. Auch wenn Sie keine ganz bestimmten Gründe haben, sollten Sie wahrscheinlich in Betracht ziehen, Ihr Eigentum auch nichtatomar zu deklarieren. –