1

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

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

执行后,我收到各种错误:

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

这些错误似乎是在处理 KVO 的东西。有没有人使用 mutableChildNodes 遇到过这样的错误?任何帮助是极大的赞赏。

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

4

2 回答 2

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

于 2011-11-30T09:12:19.553 回答
-2

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

于 2011-12-03T01:41:53.960 回答