Как перенести постоянное хранилище Core Data без остановки процесса на iOS? - PullRequest
0 голосов
/ 27 января 2012

Я использую Core Data для поддержания постоянного хранилища, и база данных может вырасти довольно большой.Мои пользователи с большими базами данных на iPad 1 не успевают выполнить легкую миграцию вовремя, чтобы завершить процесс, прежде чем приложение будет убито iOS из-за зависания.

Что я хочу сделать, это каждый раз, когда запускается серверпроверьте, нужно ли перенести базу данных (я не могу найти метод для этого в NSPersistentStoreCoordinator), если он задерживает процесс запуска сервера до тех пор, пока база данных не будет обновлена, и не отобразит на экране счетчик, а затем перейдите кпроцесс запуска сервера, когда это так.Кажется, что лучший способ сделать это - добавить метод - (BOOL) upgradeStoreNeedsUpgrade в метод запуска сервера, но я не могу найти способ проверить.Я не вижу методов в NSPersistentStoreCoordinator или NSPersistentStore для проверки совместимости базы данных по заданному URL-адресу с заданной моделью управляемых объектов.

Является ли мое решение правильным способом, и если да, то как я могу проверить, еслимодель управляемого объекта совместима с файлом SQLite по заданному URL-адресу?

1 Ответ

1 голос
/ 27 января 2012

Вы можете попробовать обернуть облегченный код миграции основных данных в блок отправки. Это должно раскрутить его в фоновый поток, чтобы вы могли обойти сторожевой таймер запуска приложения, который, вероятно, убивает ваше приложение. Либо это, либо вы запустили устройство из памяти.

...