Как вызвать метод / селектор, когда переменная / объект меняет значение на iPhone - PullRequest
0 голосов
/ 18 сентября 2010

Я ищу способ «отслеживать / наблюдать» одноэлементный класс, который я использую для передачи информации из асинхронного http-запроса.Я хочу обновить пользовательский интерфейс после получения и анализа ответа.Поскольку в iPhone SDK нет NSArrayController для контроля моих данных в синглтоне, как я могу выполнить асинхронное обновление пользовательского интерфейса?

Вот как у меня отделена логика:

Singleton: (удерживатьмассив с данными)

RESTClient: извлекает xml из удаленной службы и сохраняет в массиве в синглтоне

ViewController: необходимо отслеживать изменения данных синглтона и обновлять пользовательский интерфейс с помощью функции

Заранее спасибо:)

1 Ответ

2 голосов
/ 18 сентября 2010

Хотя в iOS нет NSArrayController, в ней есть все приемы, над которыми он работает.В частности, это привязка значения ключа и более фундаментальный наблюдение значения ключа .Последний должен быть вашим инструментом выбора.Это довольно легко сделать:

1) Зарегистрировать контроллер в качестве наблюдателя, например:

[singleton addObserver:self forKeyPath:@"myData" options:0 context:@"data"];

2) Наблюдать за всеми изменениями по мере их поступления:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if (context == @"data") {
        // Do whatever you need to do...
    }
    else {
        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    }
}
...