KVO準拠のメソッドを使用して配列からオブジェクトを挿入/削除することに関して質問があります。私はAaronHillegassのMacOSX用Cocoaプログラミングを使用していて、次のコード行を確認しました(insertObject:inEmployeesAtIndex:
メソッド内:
[[undoManager prepareWithInvocationTarget:self] removeObjectFromEmployeesAtIndex:index];
私が間違っている場合は訂正してください。しかし、私はいつも電話mutableArrayValueForKey:
してからremoveObjectAtIndex:
...と思っていたので、上記の行を次のように変更してみました。
[[undoManager prepareWithInvocationTarget:[self mutableArrayValueForKey:@"employees"]] removeObjectAtIndex:index];
そして、それは機能しませんでした。誰かが違いと、最初の行が機能するのに2番目の行が機能しない理由を説明できますか?
更新:コレクションクラス(NSMutableArrayのインスタンス)をKVCに準拠させるために、removeObjectFromEmployeesAtIndex:indexメソッドが実装されています。したがって、最終的には、呼び出しは最終的に呼び出す[[self mutableArrayValueForKey:@"employees"] removeObjectAtIndex:index];
必要があります[self removeObjectFromEmployeesAtIndex:index];