我有一个 NSOutlineView 显示由 NSTreeController 控制的内容,我将其绑定到 NSMutableArray (arrayOfFiles)。该数组包含 NSTreeNode 对象,其中代表对象(Fileobject 类)包含许多 ivars。我想为特定对象编辑和更新名为“direction”的 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 而是替换整个对象时,我看不到如何使用键值编码替换我的对象?
任何关于我做错了什么的建议以及关于我如何解决这个问题的建议都非常感谢。
干杯,谢谢!特隆