iOS & sqlite, возвращая структурированные строки из таблицы (например, список папок с закладками в Safari) - PullRequest
0 голосов
/ 07 февраля 2011

Привет всем, я изо всех сил пытаюсь придумать способ описать мою проблему, поэтому я собираюсь использовать iOS 'Safari в качестве примера, поскольку он почти соответствует тому, чего я пытаюсь достичь.В safari, если вы добавляете или редактируете закладку, вы можете выбрать, в какую папку будет помещена закладка. UITableViewController отображается с иерархическим списком папок, дочерняя папка / подпапка отображается с увеличенным отступом UITableViewCell.Вот снимок экрана, на котором показано, что я имею в виду: Снимок экрана

Закладки и папки хранятся в одной таблице в базе данных sqlite, например: Снимок экрана

Таким образом, легко определить, какие папки являются родителями каких других папок, используя столбцы id и parent.

Что я не могу понять, так это как получить массив / словарь /установить, который поддерживает эти отношения (или содержит соответствующие данные), чтобы я мог использовать его в UITableViewController?

Мои текущие методы (которые возвращают NSMutableArray, содержащий имена папок) выполняют инструкцию SQL, которая возвращает все папки, где parent = 0 или NULL, затем для каждой возвращаемой папки выполняет другую инструкцию SQL, которая получает подпапки этих папок,но это только возвращает 2 уровня папок.Я мог бы добавить больше утверждений, но я только когда-нибудь верну столько уровней, сколько имею заявлений.Я не знаю, будет ли 0 или 1000 уровней подпапок, поэтому мне нужно найти способ сделать это, когда код не зависит от данных.

Надеюсь, это имеет смысл!Буду очень признателен, если кто-нибудь сможет помочь или направить меня в правильном направлении - я чувствую, что могу упустить что-то очевидное здесь!

1 Ответ

0 голосов
/ 07 февраля 2011

Я бы порекомендовал для этого использовать родословную.

В основном это означает, что у вас есть это в вашей базе данных:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...