Обновление данных, когда они отображаются и доступны в TableView - PullRequest
0 голосов
/ 30 марта 2011

Я пытаюсь найти лучший способ справиться с этим.Во-первых, у меня есть много данных, которые я отображаю в UITableView.Доступ к этим данным можно получить по щелчку (индекс строки позволяет узнать, к каким данным получить доступ).Кроме того, я обновляю и добавляю данные, используя второй поток.Этот второй поток может изменить список данных.

Проблема в том, что в некоторых ситуациях я могу получить доступ к данным (щелкнуть по ячейке), но они были изменены между моментом их загрузки в UITableView имомент, когда я получаю к ним доступ.Это может привести к щелчку неправильных данных или удаленных данных, или SegFault ...

Чтобы предотвратить это, я делаю неизменную копию данных, когда загружаю UITableView и только UITableView и ячейкисм. копию.

Поскольку я начинающий, я управлял данными, используя XML и память (не CoreData или SQLLite).Теперь я планирую изменить эту архитектуру, чтобы перейти на SQLLite (в основном для персистентности).

У меня есть два вопроса:

  • Могу ли я использовать SQLLite или CoreDataМеханизм для создания кэшированной копии (временная таблица, например).Должен ли я сделать это вручную (вставить в desttable select * from sourcetable) или что-то сделано для цели, которую я описываю?
  • Как вы думаете, использование временных таблиц - это хороший способ сделатьчто я хочу?

Спасибо за ваши ответы и вашу помощь.

Карим

1 Ответ

1 голос
/ 30 марта 2011

CoreData использует NSManagedObjectContext, который отслеживает все изменения в памяти, пока не будет вызван такой метод, как save:, rollback или reset.В отдельном потоке вы можете создать еще один NSManagedObjectContext, который обновляет все данные, но не сохраняет никаких данных до тех пор, пока не будут выполнены определенные критерии синхронизации (т. Е. Пользователь больше не редактирует таблицу).Как только все критерии выполнены, вы можете сохранить NSManagedObjectContext и перезагрузить таблицу.

Примечание:

Фоновые потоки, использующие базовые данные, должны уведомлять основной поток об изменениях.

Параллельность с базовыми данными

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