Key Value Observationパターンを実装しようとしていますが、ほとんどのプロセスでうまくいきましたが、newValueとoldValueは値が古い値から新しい値に変更されても同じです。これまでに実装したサンプルコードを示します。誰かが私にこのことが間違っていることを教えてもらえるといいですね。KeyValue実装で問題が発生する
@property (strong, nonatomic) NSString* selectedRow;
オブザーバーに値が更新されます
[self addObserver:self
forKeyPath:@"selectedRow"
options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew
context:NULL];
メソッドの追加
-(void) methodToChangeValue {
self.selectedRow = [self.tableView indexPathForCell:[selectedCell]];
//Above line is dummy that will get the row for indexPath and set the selected row, I wanted to pass that row to selectRow key
}
オブザーバーコール
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSString* oldValue = [change valueForKey:NSKeyValueChangeOldKey];
NSString *newValue = [change valueForKey:NSKeyValueChangeNewKey];
NSLog(@" old value %@ and new value %@", oldValue,newValue);
}
**古い値と新しい値がさえIかかわらず同じです変更されたメソッドの値。
おかげ
私は、tableViewcellを選択したユーザーに基づいて_selectedRowを設定し、行の古い値と新しい値を取得したいとします。私は間違っていることを私がそこで行ったことは確かではありません。 – RoshUn
'methodToChangeValue'のコードを' self.selectedRow = [self.tableView indexPathForCell:[selectedCell]]; 'に置き換えてください。それはKVOを誘発し、あなたに古いものと新しい価値を与えます。 – rmaddy
ありがとう@rmaddy。私はまだoldValueを取得することができません、私は行を変更してもoldValueのnullを返している、新しい値は古い値nullと新しい値3を持っています。 – RoshUn