Cocoa 使用NSTreeController时如何查找NSOutlineView行索引

Cocoa 使用NSTreeController时如何查找NSOutlineView行索引,cocoa,Cocoa,我正在使用NSTreeController管理NSOutlineView的节点。当用户添加新项目时,我将创建一个新对象并将其插入: EntityViewEntityNode *newNode = [EntityViewEntityNode nodeWithName:@"New entity" entity:newObject]; // Insert at end of group // NSIndexPath *insertAt = [pathOfGroupNode indexPathByAd

我正在使用NSTreeController管理NSOutlineView的节点。当用户添加新项目时,我将创建一个新对象并将其插入:

EntityViewEntityNode *newNode = [EntityViewEntityNode nodeWithName:@"New entity" entity:newObject];

// Insert at end of group
//
NSIndexPath *insertAt = [pathOfGroupNode indexPathByAddingIndex:[selected.children count]];
[entityCollectionTreeController insertObject:newNode atArrangedObjectIndexPath:insertAt];
现在我想打开表列进行编辑,以便用户可以命名新项。这似乎合乎逻辑:

NSInteger row = [entityCollectionOutlineView rowForItem:newNode];
[entityCollectionOutlineView editColumn:0 row:row withEvent:nil select:YES];
但是,行始终为-1,表示找不到对象。拨弄一下就会发现树控制器实际上并没有将我的对象直接放在树中,而是将它们包装在自己的节点对象中


任何人都知道我将如何获得相对于outline视图的行索引,因此我可以做到这一点,而不必枚举outline视图中的所有内容并计算回我节点的映射?

当插入新节点时,它将在outline视图中自动选中。因此,您可以使用

NSInteger selectedRow = [entityCollectionOutlineView selectedRow];