我正在寻找一种方法来“监视/观察”我用来从异步http请求传回信息的单例类。我希望在收到并解析响应后更新UI。由于iPhone SDK没有NSArrayController来监控单例中的数据,我该如何进行异步UI更新?
这就是我将逻辑分开的方式:
单例: (保持带数据的数组)
RESTClient实现: 从远程服务检索xml并以单例
保存到数组的ViewController: 需要监控单例数据的更改并通过函数
更新UI提前谢谢你:)
答案 0 :(得分:2)
虽然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];
}
}