1
我有一個nsmutablearray
志願的NSMutableArray刪除對象通知
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
NSLog(@"Received notification: keyPath:%@ ofObject:%@ change:%@",
keyPath, object, change);
//[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
//array accessors
- (void)insertNewObject:(id)object
{
[self willChangeValueForKey:@"heldJoins"];
[heldJoins addObject:object];
[self didChangeValueForKey:@"heldJoins"];
}
- (void)removeObject:(id)object
{
[self willChangeValueForKey:@"heldJoins"];
[heldJoins removeObject:object];
[self didChangeValueForKey:@"heldJoins"];
}
一個單獨的類我「觀察」從另一個類 我RootViewController的這個陣列中所做的更改
[CCV addObserver:self forKeyPath:@"heldJoins" options:NSKeyValueChangeOldKey||NSKeyValueChangeNewKey context:NULL];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"Received notification: keyPath:%@ ofObject:%@ change:%@",keyPath, object, [change allKeys]);
}
這工作,我當有一個對象被刪除或添加通知 但是我無法弄清楚(也許它不可能)如何看到被刪除或添加的對象(主要需要該對象時,其刪除不添加你gh)
我知道NSDictionary
變量Change
應該有我的對象,但它只有一個鍵「kind」,它始終等於1,因爲總是會對該數組進行一次更改。
的nsmutablearray
充滿號500100300 所以當這些數字被刪除我想知道在我的觀察類中刪除該號碼 我該怎麼辦呢?
答案代碼:
[CCV addObserver:self forKeyPath:@"heldJoins" options: NSKeyValueObservingOptionOld ||NSKeyValueChangeNewKey context:NULL];
NSLog(@"Received notification: keyPath:%@ ofObject:%@ change:%@",keyPath, object, [change valueForKey:@"new"]);
謝謝,虐待添加正確的代碼底部 –
您的addObserver調用使用錯誤的常量的選項。例如,你正在使用NSKeyValueChangeOldKey,但正確的常量是(正如我在我的答案中所說)NSKeyValueObservingOptionOld。 –
你也在使用'||',但你應該使用'|'。 –