0
我正在嘗試實現Key Value Observation模式,並且在大多數流程中運行良好,但即使值已從舊值更改爲新值,我的newValue和oldValue也是相同的。以下是我迄今爲止實施的示例代碼。如果有人能告訴我我的錯在哪裏,那將會很棒。實施Keyvalue Observation with issues
@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);
}
**舊的價值和新的價值,即使我一樣改變了 來自該方法的價值。
感謝
我已經根據用戶選擇tableViewcell設置_selectedRow,並希望獲取行的舊值和新值。我不完全確定,我在那裏做了什麼是錯的。 – RoshUn
用'self.selectedRow = [self.tableView indexPathForCell:[selectedCell]];'替換'methodToChangeValue'中的代碼。這將觸發KVO並給你新的和新的價值。 – rmaddy
謝謝@rmaddy。我仍然無法獲得oldValue,即使我更改了行,它仍然返回null作爲oldValue,新值具有舊值null和新值3. – RoshUn