У меня есть БД SQLite, содержащая задачи.У каждой задачи есть дата, и может быть несколько задач на дату.
Мое приложение загружает данные за один месяц только в изменяемый словарь.Ключ каждого элемента словаря - это строка дня месяца (1, 2, 3 ... 31).Соответствующее значение представляет собой массив задач на эту дату.Таким образом, для каждого дня месяца существует массив из 0 или более задач.
Изменяемый словарь объявлен в корневом viewcontroller.Корневой viewcontroller в Интерфейсном Разработчике является источником данных и делегатом табличного представления.Каким-то образом приложение знает, что корневой viewcontroller получает свои данные из изменяемого словаря.Я не уточняю это, поэтому мне интересно, что произойдет, если будет более одного словаря или, может быть, словарь и изменяемый массив?Тем не менее, это работает без дополнительной проводки.Когда корневой viewcontroller загружает данные в таблицу, каждый заголовок раздела содержит дату в качестве своего текста и перечисляет все задачи в отдельных ячейках внизу.Некоторые заголовки не имеют ячеек.
Теперь, чтобы изменить задачу, у меня есть «входной» view-контроллер.Выбор задачи в таблице приводит к тому, что viewcontroller для записи загружает информацию о задаче в текстовые поля, где я могу изменить заголовок, дату, детали или пометить ее как выполненную.После редактирования запись viewcontroller выгружается, корневой (табличный) viewcontroller перезагружается, таблица viewView вызывает reloadData, и изменения становятся очевидными.
ЗДЕСЬ ПРОБЛЕМА: если я добавлю новую задачу, нажав кнопку + наNav контроллер, он ведет меня к той же записи viewcontroller, где я устанавливаю данные.Я возвращаюсь к корневому viewcontroller теми же методами, что и при редактировании существующих данных.Еще не было создано ни одной новой ячейки для новых данных!Если я закрою и снова открою приложение, новые данные отобразятся правильно.
Поскольку обновления данных и вставки записываются в БД из массивов словаря при закрытии приложения, это означает, что новый элемент действительно был добавлен в один из них.массивов.
Сводка: отредактируйте существующий элемент массива, и новые данные отобразятся, когда таблица перезагрузит свои данные.Добавьте элемент массива, и он будет игнорироваться при перезагрузке таблицы.
Что не так?