2011-10-31 87 views
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"]); 

回答

2

這聽起來像你當你添加的觀察者沒有指定NSKeyValueObservingOptionOld。

+0

謝謝,虐待添加正確的代碼底部 –

+0

您的addObserver調用使用錯誤的常量的選項。例如,你正在使用NSKeyValueChangeOldKey,但正確的常量是(正如我在我的答案中所說)NSKeyValueObservingOptionOld。 –

+1

你也在使用'||',但你應該使用'|'。 –