如何保存源列表项的顺序?

时间:2017-04-21 23:47:30

标签: swift cocoa nstreecontroller

我有一个NSOutlineView作为源列表,比如Mail.app。它的内容绑定到一个NSTreeController,它管理我的模型对象数组。我已经在源列表上实现了拖放操作,这非常有效。

现在,当用户在侧边栏中完成拖放操作时,我想保存新订单。但是,我找不到任何描述通常如何做的事情。

我能想到的最好的是:

  • treeIndex属性添加到我的模型类,以将模型的位置存储在源列表中
  • 执行放置操作后,遍历NSTreeController中的每个节点,并将每个节点的索引存储在模型的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
}

0 个答案:

没有答案