Обновление табличного представления в другом контроллере при вставке / удалении записей в Core Data - PullRequest
0 голосов
/ 25 февраля 2011

Я недавно работаю над проектом Core Data.Существует два вида: один из них представляет собой форму, которую пользователь должен заполнить, а затем вставить запись через основные данные в базу данных sqlite;другое представление предназначено для отображения вставленных записей и позволяет пользователю удалить любую из них.

Я реплицировал код для вставки / удаления записей из проекта приложения на основе навигации.Все работает нормально, если пользователь выполняет только вставку или удаление исключительно.Однако, когда две операции чередуются, возникают проблемы ...

Например: 1) Пользователь вставляет «Apple», «Orange» и «Grape», используя форму.Таблица показывает данные правильно.2) Пользователь затем удаляет запись «Оранжевый».Стол все еще выглядит хорошо.3) После этого пользователь вставляет новую запись «Груша».Стол запутался.Запись «Orange» снова появляется на столе ...

Я следил за БД sqlite на протяжении всего процесса тестирования, все работает отлично.Единственная проблема состоит в том, что таблица испорчена.

Я подозреваю, что ошибка вызвана тем, что источник данных таблицы не обновлен.Поскольку строка добавляется / удаляется в соответствии с indexPath, если новая запись использует тот же indexPath со старой записью, а данные таблицы не обновлены, то создается впечатление, что старая запись повторно вставлена.

Однако я понятия не имею, почему данные таблицы не актуальны.Операция вставки / удаления выполняется в одном и том же управляемом контексте.

Это беспокоило меня некоторое время, и я не очень хорошо разбираюсь в основных данных.Я действительно надеюсь услышать любые советы, чтобы разобраться в этом.Заранее спасибо за вашу помощь.

1 Ответ

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

Ваши подозрения верны.

Самый простой способ получить то, что вы хотите, это использовать NSFetchedResultsController и его делегат.

Если вы создаете фиктивный проект вXcode создает приложение на основе навигации и проверяет использование Core Data для хранения.

область после

#pragma mark Fetched results controller delegate

в RootViewController.m покажет вам, как обновлять UITableView, когдамодель меняется.

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