У меня есть три объекта, Alien, Balloon и Joystick, каждый из которых имеет свойство Location, которое я хотел бы наблюдать с одного контроллера.
, когда контроллер наблюдает за изменением переменной Location любогоиз объектов, он обновляет свойства центра соответствующих представлений в соответствии с местоположением модели.
Моя проблема заключается в том, что я использую следующую функцию:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
Параметр Object, который имееттип id, используется для поиска правильного индекса в моем MutableArray объектных моделей, а затем с соответствующим индексом в моем MutableArray представлений я меняю центр представления ..
Однако .. потому чтопараметр имеет тип id, а не (Balloon *), (Joystick *) или (Alien *), xcode жалуется, что Location не является членом объекта в следующем коде:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
int index;
if ([keyPath isEqualToString:@"Location"])
{
index = [balloons indexOfObjectIdenticalTo:object];
[[balloonVs objectAtIndex:index] setCenter:CGPointMake(object.Location.x, object.Location.y)];
}
}
Я понимаюпочему это не работает .. но не знаю, как я мог это исправить.