7

我有一個關於KVO的快速問題。我明白,如果需要觀察添加物,對於NSArray,您可以執行以下操作。NSMutableDictionary添加和刪除KVO

NSIndexSet* set = [NSIndexSet indexSetWithIndex:[someIndex integerValue]]; 
      [self willChange:NSKeyValueChangeInsertion valuesAtIndexes:set forKey:@"theArrayName"]; 
       // add the objects at the specified indexes here 
      [self didChange:NSKeyValueChangeInsertion valuesAtIndexes:set forKey:@"theArrayName"]; 

在註冊觀察時,您將得到一個更改了索引的更改字典。

但是,我不明白我如何觀察添加到NSMutableDictionary的新對象。有沒有辦法觀察對象添加/刪除?

感謝,

[編輯] 我發現它符合我目前的需求的解決方案。我希望以下對未來的開發者有所幫助。

[self willChangeValueForKey:@"someDictionary" withSetMutation:NSKeyValueUnionSetMutation usingObjects:[NSSet setWithObject:someObject]]; 

[Images setObject:someObject forKey:someIndex]; 

[self didChangeValueForKey:@"someDictionary" withSetMutation:NSKeyValueUnionSetMutation usingObjects:[NSSet setWithObject:someObject]]; 
+6

+1。好問/答。你應該在你的問題中發佈你嵌入的答案作爲答案。您目前正處於「未答覆」列表中。對於你自己的問題發佈一個答案實際上是鼓勵SO的。提出一個問題,你已經知道答案並立即發佈答案後也會受到鼓勵(假設這個問題是其他人也可能遇到的問題)。 – Sam

回答

3

只是爲了確保問題得到解答。信貸去@DoubleDunk

[self willChangeValueForKey:@"someDictionary" withSetMutation:NSKeyValueUnionSetMutation usingObjects:[NSSet setWithObject:someObject]]; 

    [Images setObject:someObject forKey:someIndex]; 

    [self didChangeValueForKey:@"someDictionary" withSetMutation:NSKeyValueUnionSetMutation usingObjects:[NSSet setWithObject:someObject]];