У меня есть исходный массив элементов, извлеченный из базы данных:
var items = [Item]()
, который содержит:
- Фрукты, яблоко, красный, 1
- Фрукты, Апельсин, Апельсин, 2
- Овощ, Салат, Зеленый, 1
- напиток, молоко, белый, 1
Чтобы отобразить этот список в UITableView, сгруппированном по разделам, я создаю следующую структуру:
struct Section {
var sectionName : String!
var sectionItems : [Item]!
}
var sections : [Section]!
И с массивом разделов я могу правильно отобразить свой UITableView. Если мне нужно изменить количество элемента, я могу легко изменить элемент в массиве section , получая доступ к данным через раздел и строку indexpath.
Проблема:
Однако я не могу понять, как изменить исходные данные (список из 4 элементов), которые мне нужно использовать для сохранения в базе данных. Информация indexpath ничего не говорит мне о том, какой индекс в массиве items мне нужен для доступа к изменениям.
Решения
Я думаю о двух решениях, ни одно из которых не кажется слишком хорошим:
Восстановление исходного списка путем итерации по «разделам». Звучит как много ненужных итераций, учитывая, что я мог бы просто получить доступ к элементу через индекс.
Создайте дополнительное свойство для каждого элемента, которое сохраняет свою позицию индекса в исходном массиве. Это выглядит очень грязно.
Как бы вы, парни и девушки, пошли на это?
Заранее большое спасибо.