我有一大堆模型可以观察自己的变化。当触发 setter 时,模型中的观察者会被调用,并且在该模型中,我调用 Web 服务器并更新 Web 服务器中的信息,以便它正确地拥有应有的数据。
但是,在我对 Web 服务器的调用中,我可以从连接断开、服务器重置等到服务器说不允许更新(例如,另一个用户更改的某些其他参数阻止了更新)。
哦,断开数据存储的乐趣……
有什么方法可以self
在不重新触发 KVO 操作的情况下更新(即模型)?
当我得到响应时,我可以关闭观察者,但是在执行后台服务器请求时,可以对同一对象进行另一个用户操作。这将中断另一个呼叫。
请参阅此处的帖子,了解我为首先进行观察而尝试做的事情以及完整模型的代码示例。
我正在拨打电话的部分将在观察者中,如下所示:
-(void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if ([keyPath isEqual:@"firstName"]) {
if !([serverCall value:[change objectForKey:NSKeyValueChangeNewKey]
forKey:@"firstName"]) {
// Notify the user of the problem and somehow do a
// [self setFirstName:[change objectForKey:NSKeyValueChangeOldKey]]
// without firing off a KVO which would only loop this process
}
}
if ([keyPath isEqual:@"lastName"]) {
// Do whatever I need to do
}
}
你们似乎总是能得到一些很好的建议,我总是很感激你们提出的任何建议。