当我尝试将一个孩子插入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
类型的实例插入到带有NSTreeController
的insertObject
中。您使用insertObject
插入模型对象,此时NSTreeNode
将自动为其创建,即。
另外,在模型对象中,您需要具有设置为NSMutableArray
的属性或键。然后,在插入任何模型对象之前,请将childrenKeyPath
的NSTreeController
属性设置为等于该属性或键的名称。
这是因为NSTreeController
和NSTreeNode
并非旨在保存数据或子对象本身,而是充当您创建并保留的模型的简单但有用的“映射”。
我希望这些信息对其他人有帮助,因为其他StackOverflow对此都保持沉默...
关于objective-c - 因为childrenKeyPath为nil,所以无法执行操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18777508/