我有一個NSOutlineView,它顯示了我綁定到NSMutableArray(arrayOfFiles)的NSTreeController所控制的內容。該數組包含NSTreeNode對象,其中mappedObject(Fileobject類)包含多個ivars。我想編輯和更新特定對象的名爲「方向」的伊娃。我設法使用我爲每個對象存儲的NSIndexPath來獲取感興趣的對象。NSOutlineView的更新內容
[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
我明白我在做什麼毛病Key-Value coding在這裏,但我無法看到它是什麼。我試圖從蘋果的所有例子中尋求解決方案,但我只能找到不使用NSTreeController和NSTreeNode的例子。我的想法是1)在indexpath中提取對象2)編輯提取的對象3)在indexpath中刪除當前對象4)使用命令[self.myOutlineViewController.myTreeController insertObject:myNode atArrangedObjectIndexPath:myIndexPath];
將我的新編輯對象插入到indexpath中。我沒有看到我怎麼可以替換我的對象使用鍵值編碼時,我不只替換一個伊娃,但整個對象?
對於我所做錯的任何建議以及我如何解決此問題的建議都非常感謝。
乾杯,謝謝! Trond