大家好 我正在努力想出一种描述我的问题的方法,所以我将使用iOS的Safari作为一个例子,因为它几乎完全符合我想要实现的目标。
在safari中,如果您添加或编辑书签,则可以选择将书签放入哪个文件夹.UITableViewController显示文件夹的分层列表,子文件夹/子文件夹通过增加的UITableViewCell显示缩进。这是一个屏幕截图,显示我所指的内容:Screenshot
书签和文件夹存储在sqlite数据库中的单个表中,如下所示: Screenshot
因此很容易找出哪些文件夹是使用id和parent列的其他文件夹的父文件。
我无法解决的问题是,如何获得维护这些关系(或包含相关数据)的数组/字典/集,以便我可以在UITableViewController中使用它?
我当前的方法(返回包含文件夹名称的NSMutableArray)执行一个SQL语句,该语句返回parent = 0或NULL的所有文件夹,然后对于每个返回的文件夹,执行另一个获取该文件夹子文件夹的SQL语句,但这只是返回2级文件夹。我可以添加更多语句,但我只会返回与语句一样多的级别。我不知道是否会有0或1000个级别的子文件夹,所以我需要找到一种方法来执行此操作,其中代码不依赖于数据。
希望这是有道理的!如果有人可以帮助或指出我正确的方向,我会非常感激 - 我觉得我可能会遗漏一些明显的东西!
答案 0 :(得分:0)
我建议使用血统。
基本上这意味着你在数据库中有这个:
Node ParentNode Depth Lineage
100 NULL 0 /
101 100 1 /100/
102 101 2 /100/101/
103 102 3 /100/101/102/
104 102 3 /100/101/102/
105 102 3 /100/101/102/
有关详细信息,请参阅此链接:
http://www.sqlteam.com/article/more-trees-hierarchies-in-sql