NSMutableArray (arrayOfFiles) にバインドする NSTreeController によって制御されるコンテンツを表示する NSOutlineView があります。配列には NSTreeNode オブジェクトが含まれており、そこでは、presentedObject (Fileobject クラス) が多数の ivar を保持しています。特定のオブジェクトの「方向」という名前の ivar を編集および更新したいと考えています。オブジェクトごとに保存した NSIndexPath を使用して、目的のオブジェクトを取得することができました。
[self.myOutlineViewController.myTreeController setSelectionIndexPath:myIndexPath];
Fileobject *myObject =[[[self.myOutlineViewController.myTreeController.arrangedObjects descendantNodeAtIndexPath:myIndexPath] representedObject] representedObject];
[myObject setDirection:0];
これは問題なく動作しますが、NSIndexPath で抽出したばかりのオブジェクトを更新するときに問題が発生します。次のクラッシュ:[self.myOutlineViewController.myTreeController removeObjectAtArrangedObjectIndexPath:myIndexPath];
エラーメッセージとともに
An uncaught exception was raised
2012-11-08 17:23:25.557 S3access[20379:12b03] *** -[NSKeyValueSlowMutableArray removeObjectsAtIndexes:]: value for key myArrayOfFiles of object 0x40012e460 is nil
ここでキーと値のコーディングに何か問題があることは理解していますが、それが何であるかを確認できません。Apple のすべての例で解決策を探してみましたが、NSTreeController と NSTreeNode を使用していない例しか見つかりません。私の考えは、1) indexpath でオブジェクトを抽出する 2) 抽出されたオブジェクトを編集する 3) indexpath で現在のオブジェクトを削除する 4) command を使用して、新しく編集したオブジェクトを indexpath に挿入することでした[self.myOutlineViewController.myTreeController insertObject:myNode atArrangedObjectIndexPath:myIndexPath];
。ivar だけではなくオブジェクト全体を置き換える場合、キー値コーディングを使用してオブジェクトを置き換える方法がわかりません。
私が間違っていることについての提案と、これを解決する方法についての提案は高く評価されています。
乾杯、そしてありがとう!トロンド