我的模型如下所示:
在我的测试项目中,我有以下两种方法:
- (void) addChildWithName:(NSString*)name toParent:(Item*)parent
{
static NSUInteger count = 1;
Item* childItem;
childItem = [NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:[self managedObjectContext]];
[childItem setName:[NSString stringWithFormat:@"%@ %lu", name, count]];
[childItem setParent:parent];
count++;
}
- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
[super windowControllerDidLoadNib:aController];
// Add any code here that needs to be executed once the windowController has loaded the document's window.
Item* rootItem;
rootItem = [NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:[self managedObjectContext]];
[rootItem setName:@"rootItem"];
[self addChildWithName:@"rootChild" toParent:rootItem];
[self addChildWithName:@"rootChild" toParent:rootItem];
[self addChildWithName:@"rootChild" toParent:rootItem];
[self addChildWithName:@"rootChild" toParent:rootItem];
[self addChildWithName:@"rootChild" toParent:rootItem];
}
这会产生一个大纲视图,如下所示:
对于 xib 中的树控制器对象,我已将 Children Key Path 设置为“children”。托管对象上下文 (moc) 绑定到文件所有者 moc。我的大纲视图的表列的值绑定到 NSTreeController 的排列对象,模型键路径为“名称”。
如您所见,当子项只应出现在根项下时,我得到了子项的重复条目。
我究竟做错了什么?
示例项目位于示例项目链接。
谢谢你。