как получить родительский элемент выбранного элемента outlineview Swift

#swift #nsoutlineview #nstreecontroller

#swift #nsoutlineview #nstreecontroller

Вопрос:

У меня есть многоуровневая иерархия в моем outlineview. Я могу получить выбранный элемент и его родительский элемент, используя приведенный ниже код.

   func outlineViewSelectionDidChange(_ notification: Notification) {
    guard let outlineView = notification.object as? NSOutlineView else {return}

    if let item = outlineView.item(atRow: outlineView.selectedRow) as? CubeData{
      
         // Getting the parent item
          if let parentItem = outlineView.parent(forItem: item) as? CubeData{
            print("Parent Item value:", parentItem.node)
          }
        print("Selected Item value:", item.node)
       }
}
 

Но не удалось получить все основные родительские элементы.

Например, A-> B-> C-> D — это моя иерархия, и всякий раз, когда я выбираю «D», я могу получить «C» и «D». Мне нужны все родительские элементы. Любая помощь?

Комментарии:

1. CubeData Имеет parent ли свойство?

2. @Willeke, у нас есть массив родительского свойства.

3. Почему вы не можете получить бабушку и дедушку?

4. @Willeke, я не знаю, как его получить. Я не могу связать дочернего элемента с дедушкой и бабушкой.

5. Прародитель является родителем родителя. Если вы получаете родительский элемент с помощью, let parentItem = item.parent вы получаете дедушку let grandparentItem = parentItem.parent и бабушку.