NSTreeNode mutableChildNodes不能正常工作?

时间:2011-11-29 18:17:00

标签: objective-c cocoa nstreecontroller

我完全不知道为什么这不起作用。我正在尝试将新的NSTreeNode插入到一个可变的子节点数组中。这是代码:

NSTreeNode *newNode = [[NSTreeNode alloc] init];
NSMutableArray *children = [anExistingParentTreeNode mutableChildNodes];
[children addObject:newNode];

执行后,我会遇到各种错误:

  • - [NSCFSet initWithObjects:count:]:尝试在对象上插入nil对象[0]
  • - [NSTreeNode _tearDownObserving]:无法识别的选择器发送到实例0x2000bff40
  • 严重的应用程序错误。在Core Data更改处理期间捕获到异常: - [NSTreeNode _tearDownObserving]:使用userInfo(null)发送到实例0x2000bff40的无法识别的选择器

这些错误似乎与KVO有关。有没有人使用mutableChildNodes遇到这样的错误?非常感谢任何帮助。

注意:底层的NSTreeController通过托管对象上下文绑定到核心数据。

2 个答案:

答案 0 :(得分:1)

您是否未正确初始化newNode对象?

为该类定义的唯一init方法是:

- (id)initWithRepresentedObject:(id)modelObject

使用init时,您只需使用从NSObject继承的默认实现。

通常,一个类有一个或多个指定的初始值设定项,但在NSTreeNode的情况下,我看不到它是在文档中指定的。但是,由于只为该类定义了一个初始化程序,并且没有用于在稍后阶段设置所表示对象的setter方法,因此我得出结论:initWithRepresentedObject:是该类的指定初始化程序。

关于初始化程序:http://developer.apple.com/library/ios/#documentation/general/conceptual/DevPedia-CocoaCore/MultipleInitializers.html

答案 1 :(得分:-1)

请参阅我对原始问题的最新评论。