iOS& sqlite,返回表格中的行结构(如safari中的书签文件夹列表)

时间:2011-02-07 13:22:50

标签: iphone sqlite uitableview

大家好 我正在努力想出一种描述我的问题的方法,所以我将使用iOS的Safari作为一个例子,因为它几乎完全符合我想要实现的目标。

在safari中,如果您添加或编辑书签,则可以选择将书签放入哪个文件夹.UITableViewController显示文件夹的分层列表,子文件夹/子文件夹通过增加的UITableViewCell显示缩进。这是一个屏幕截图,显示我所指的内容:Screenshot

书签和文件夹存储在sqlite数据库中的单个表中,如下所示: Screenshot

因此很容易找出哪些文件夹是使用id和parent列的其他文件夹的父文件。

我无法解决的问题是,如何获得维护这些关系(或包含相关数据)的数组/字典/集,以便我可以在UITableViewController中使用它?

我当前的方法(返回包含文件夹名称的NSMutableArray)执行一个SQL语句,该语句返回parent = 0或NULL的所有文件夹,然后对于每个返回的文件夹,执行另一个获取该文件夹子文件夹的SQL语句,但这只是返回2级文件夹。我可以添加更多语句,但我只会返回与语句一样多的级别。我不知道是否会有0或1000个级别的子文件夹,所以我需要找到一种方法来执行此操作,其中代码不依赖于数据。

希望这是有道理的!如果有人可以帮助或指出我正确的方向,我会非常感激 - 我觉得我可能会遗漏一些明显的东西!

1 个答案:

答案 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