Итак, у меня есть объект модели, который называется «местоположение» и имеет набор свойств. Одним из которых является ' distanceFromUserLocation '. Очевидно, что для этого нужно знать местоположение пользователя, поэтому в объекте модели я вычисляю текущее местоположение пользователя.
Это также устанавливает свойство CLLocation для этой модели каждый раз при использовании метода didUpdateToLocation.
У меня также есть метод initWithDictionary в модели, который устанавливает все значения для свойств в модели местоположения.
код ниже для моей модели:
@synthesize name = _name;
@synthesize entryLocation = _entryLocation;
@synthesize address = _address;
@synthesize contactNumber = _contactNumber;
@synthesize distanceFromUserLocation = _distanceFromUserLocation;
@synthesize itemDescription = _itemDescription;
@synthesize locationManager = _locationManager;
@synthesize userLocation = _userLocation;
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
if (newLocation != nil) {
self.userLocation = newLocation;
NSLog(@"lat: %@ lon: %@ ", [NSString stringWithFormat:@"%.7f", newLocation.coordinate.latitude], [NSString stringWithFormat:@"%.7f", newLocation.coordinate.longitude]);
}
[manager stopUpdatingLocation];
}
-(id)initWithDictionary:(NSDictionary*) dictionary
{
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
[self.locationManager startUpdatingLocation];
self = [super init];
if (self)
{
self.name = [dictionary valueForKey:@"Name"];
self.address = [dictionary valueForKey:@"Address"];
self.contactNumber = [dictionary valueForKey:@"ContactNumber"];
self.itemDescription = [dictionary valueForKey:@"Description"];
double lat = [[dictionary valueForKey:@"Latitude"] doubleValue];
double lon = [[dictionary valueForKey:@"Longitude"] doubleValue];
self.entryLocation = [[CLLocation alloc] initWithLatitude:lat longitude:lon];
self.distanceFromUserLocation = [self.userLocation distanceFromLocation:self.entryLocation];
}
return self;
}
Проблема, с которой я столкнулся, заключается в том, что в didUpdateToLocation я устанавливаю для свойства self.currentLocation значение newLocation . Затем я записываю lat и long, чтобы убедиться, что у меня действительно есть значение, которое я делаю.
Однако, когда я затем инициализирую экземпляр модели 'Location' из моего класса контроллера, а затем записываю значение currentLocation для этого объекта модели:
NSLog(@"%@", location.currentLocation);
Я получаю (ноль) в журнале.
Если я попробую:
NSLog(@%@", location.currentLocation.coordinate.latitude);
Я получаю EXC_BAD_ACCESS ошибку.
Я успешно получаю текущее местоположение в didUpdateToLocation и регистрирую его, но почему тогда, когда я устанавливаю для свойства currentLocation значение newLocation, оно не сохраняется?
Любая помощь с этим будет принята с благодарностью:)