Как лучше всего переместить огромную базу данных.sqlite в новый каталог на старом iOS-устройстве с небольшим объемом памяти?
Для моего последнего обновления приложения я должен переместить базу данных Core Data .sqlite пользователя из каталога Documents в каталог Application Support. Я использую migratePersistentStore:toURL:options:withType:error:
метод. Я имею дело с одним пользователем, который каким-то образом сумел сохранить достаточно данных в своей базе данных, так что теперь это колоссальный 9G. Кроме того, ее устройством является iPad Air 1, у которого были проблемы с памятью примерно в то время, когда оно было выпущено пять или шесть лет назад, а теперь это 2018 год, и она работает на последней версии iOS. migratePersistentStore:toURL:options:withType:error:
метод продолжает сбой приложения с нехваткой памяти. Но у меня нет другого способа получить.sqlite в нужное место. Может кто-нибудь посоветовать мне, как лучше всего подойти к этой ситуации? В идеале, что-то, что я мог бы сделать в своем коде - но я был бы даже признателен за предложения о других способах, которыми я мог бы просто помочь пользователю вручную перемещать эту массивную базу данных на этом этапе!
1 ответ
Я полагаю, вы используете migratePersistentStore
потому что это официальный способ сделать это. Это хороший способ, но иногда вы должны испачкать руки:
Перемещение базы данных вручную при запуске приложения перед загрузкой
Этот пост показывает, что CoreData может использовать более одного файла, который вам нужно переместить. Вы можете перечислить файлы в каталоге, использовать регулярное выражение, найти все файлы, которые необходимо переместить, переместить их в новое место и затем загрузить CoreData как обычно из нового места.
Это, однако, требует наличия необходимой инфраструктуры для этого. Вы поймете это, если хотите пойти по этому пути.
Вы можете скрыть это за признаком функции, только с кодом, только для определенного пользователя или после сбоя с нехваткой памяти, чтобы это не повлияло на пользователей, которым это не нужно.