Работя върху просто приложение, което събира текущи данни на потребителите в модел на местоположение. Това работи и мога да регистрирам местоположенията. Никой 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);
}