当我尝试将一个孩子插入NSTreeController时,为什么会出现此崩溃错误?

NSTreeController *tree = [NSTreeController new];
NSTreeNode *node1 = [NSTreeNode treeNodeWithRepresentedObject:@{ @"type": @"shirt" }];

// The below method causes mysterious crash
[tree insertObject:node1 atArrangedObjectIndexPath:[NSIndexPath indexPathWithIndex:0]];

Xcode说:



为什么会导致此错误?什么是childrenKeyPath?为什么需要它(我未使用界面生成器)?

最佳答案

我在这里犯了几个错误。您不应将NSTreeNode类型的实例插入到带有NSTreeControllerinsertObject中。您使用insertObject插入模型对象,此时NSTreeNode将自动为其创建,即

另外,在模型对象中,您需要具有设置为NSMutableArray的属性或键。然后,在插入任何模型对象之前,请将childrenKeyPathNSTreeController属性设置为等于该属性或键的名称。

这是因为NSTreeControllerNSTreeNode并非旨在保存数据或子对象本身,而是充当您创建并保留
模型的简单但有用的“映射”。

我希望这些信息对其他人有帮助,因为其他StackOverflow对此都保持沉默...

关于objective-c - 因为childrenKeyPath为nil,所以无法执行操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18777508/

10-08 21:20