我使用NSTreeNode创建了一个文件和文件夹的目录树结构,我在NSOutlineView中显示了该结构。我的问题是有些文件夹是空的,我想删除这些文件夹。我已经尝试递归迭代遍历树结构的每个元素以删除元素,但是构建树比拆除树要容易得多。我的迭代从root开始,然后我遍历每个节点的子节点,直到我到达树的顶部。但是,由于某些文件夹可能包含多个空文件夹和非空文件夹,因此很难有效地删除我不确定的元素。仅仅因为文件夹只包含另一个文件夹并不意味着我可以删除它,因为子文件夹可能是空的或包含文件。
我想我需要找到树的顶部元素/目录,然后通过所有父节点子节点向后迭代到我的rootnode,并检查每个文件夹是否为空。如果文件夹为空或仅包含我当前所在的文件夹,请删除该文件夹和父文件夹,依此类推,直到我到达root用户。
然而,我无法让它发挥作用。有没有人有方法找到定义树顶部的元素?或者有一种很好的方法来排序/删除NSTreeNode结构中的空元素吗?
我感谢所有可以得到的帮助。谢谢。干杯,特隆德
答案 0 :(得分:1)
在伪代码中:
BOOL removeTheChildless(NSTreeNode *tree)
{
for each NSTreeNode *child
{
if ( removeTheChildless(child) )
removeChild child from tree
}
return tree.isLeaf;
}
每个""可以基于mutableChildNodes
。 HTH。