如果同一个子对象多次存在,如何确保NSOutlineView.parent(forItem :)返回正确的父对象?

时间:2019-08-03 10:18:16

标签: nsoutlineview

使用NSOutlineView时遇到了一个问题,想知道有人能解决吗?

我有一个项目层次结构,最低的节点是可以出现在多个位置的对象。

例如:

  • 国家/地区

    • 城镇

      • 汽车制造商
  • 美国

    • 芝加哥

      • 丰田
    • 达拉斯

      • 丰田

现在,如果用户在列表中选择了“ Toyota”项目,然后我尝试使用outlineView.parent(forItem :) API为所选项目找到父项,它将始终返回相同的父项,大概是它遇到的第一个。

从数据源加载数据时,OutlineView似乎并没有独立跟踪父项。

大概唯一的克服此问题的方法是在每个节点上创建某种唯一的包装对象,也许是一个结构来保存公用对象。

任何人都不知道NSOutlineView使用什么方法查找给定对象的父对象?

1 个答案:

答案 0 :(得分:2)

来自NSOutlineView类参考(重点是我):

  

大纲视图具有以下功能:

     
      
  • 用户可以展开和折叠行。

  •   
  • 大纲视图中的每个项目都必须是唯一的。为了使折叠状态在两次重装之间保持一致,该项目的指针必须保持相同,并且该项目必须保持isEqual:sameness。

  •