Я работаю над простым приложением, которое собирает текущие данные пользователей в модели местоположения. Это работает, и я могу регистрировать местоположения. Однако ни один viewController не видит обновленную переменную. Я использую KVO в viewControllers для запуска, но кажется, что CLLocation не отправляет с использованием «NSKeyValueObservingOptionNew». Он сработает, если я использую «NSKeyValueObservingOptionInitial», но это сработает до того, как CLLocationManager получит возможность установить экземпляр.
Кто-нибудь знает, почему CLLocation не отправляет значение «... New»? Как я уже сказал, он работает только тогда, когда он установлен в состояние «... Начальное».
Мысли?
Посмотреть код контроллера:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if ([keyPath isEqual:@"locationUpdated"]) {
CLLocation *locationVariable = [[CLLocation alloc]init];
locationVariable = self.location.currentLocation;
NSLog(@"the location vaiable: %@", locationVariable);
self.theMap.centerCoordinate = self.location.currentLocation.coordinate;
}
}
Код модели местоположения:
- (void)startLocationManger {
if ([self locationManager] == nil) self.locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = self;
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[_locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
CLLocation *locationFix = [locations lastObject];
_currentLocation = locationFix;
NSLog(@"Current Location: %@", _currentLocation);
}