我有一个NSOutlineView作为源列表,比如Mail.app。它的内容绑定到一个NSTreeController,它管理我的模型对象数组。我已经在源列表上实现了拖放操作,这非常有效。
现在,当用户在侧边栏中完成拖放操作时,我想保存新订单。但是,我找不到任何描述通常如何做的事情。
我能想到的最好的是:
treeIndex
属性添加到我的模型类,以将模型的位置存储在源列表中treeIndex
属性问题是,我找不到如何从NSTreeController检索排列的对象。我不能让treeController.arrangedObjects
给我任何有用的东西!
通过Github repos进行搜索我已经看到了treeController.arrangedObjects.childNodes!!
的大量使用,但这只会导致Value of type 'Any' has no member 'children'
语法错误。
以下伪代码可能有助于描述我在每次放置操作后尝试执行的操作:
let parentNode = treeController.nodeAtIndex([0, 0])
for childNode in parentNode.children {
(childNode.representedObject as SidebarItem).indexPosition = childNode.index
}