私には、変化を監視するモデルがたくさんあります。セッターがトリガーされると、モデル内のオブザーバーが呼び出され、そのモデル内で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
}
}
あなたたちはいつもいくつかの良いアドバイスをやってきたようです、そして私はあなたが持っているかもしれないどんな提案にもいつも感謝しています。