2015-10-19 4 views
1

Не знаю, подходит ли этот вопрос, но я все равно спрошу.Стратегия резервного копирования и восстановления данных iCloud

У меня есть приложение iOS iCloud Core Data, которое работает прилично (хотя я думаю, что ему нужна некоторая синхронизация), и я рассматриваю возможность сохранения копии базы данных на диске iCloud в UIDocument. Это позволило бы пользователю, возможно, сегментировать базу данных вручную и загружать только те части, которые они хотят использовать в настоящий момент, а также обеспечить спокойствие, учитывая, что данные могут включать в себя некоторые данные страховых требований.

Я взвешиваю несколько альтернатив, чтобы это произошло.

Вариант 1 заключается в том, чтобы просто создать процесс сохранения и восстановления на основе iOS, который при запуске удалил бы базу данных (возможно, максимум 1000 объектов) в NSArray объектов NSDictionary (один словарь на строку), а затем JSONize NSArray в NSData и сохранить его в новом UIDocument на диске iCloud. Процесс восстановления перечислит возможные архивы для восстановления, а затем позволит пользователю выбрать один. Процесс восстановления изменит процесс сохранения.

Вариант 2 должен был бы создать приложение Mac для обработки процесса сохранения/восстановления, который позволит пользователю сохранять архивы на Mac пользователя. Это кажется намного менее трудным, хотя для этого потребуется набор приложений, работающих вместе. Механизм будет похож на вариант 1, но данные будут поступать в файл, указанный в стандартном экране выбора файловой системы Mac.

Лично я хотел бы сделать их обоим, но прежде чем начать, я хочу убедиться, что нет простого способа сброса всей базы данных SQL в NSArray из NSDictionaries.

Усложняющим фактором является то, что база данных содержит изображения, которые находятся в базе данных как NSData. Я мог бы объединить NSData, добавить его в сборку NSDictionary, а затем позволить JSON-процессу сделать это.

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

Еще одна мысль, которая пришла ко мне, - это, может быть, использовать какую-то утилиту SQLite для сохранения и восстановления локально за один сеанс, который затем реплицирует результаты на всех устройствах через iCloud. Опять же, звучит как больше ответа Mac на меня, но я действительно не знаю.

Опять же, любые предложения были бы замечательными.

+0

Джозеф, еще один вариант - использовать хранилище данных CloudKit, где CKRecords сохраняются и извлекаются из iCloud. Основываясь на описании ваших данных, это похоже на подходящее решение. – Daniel

+0

Итак, в основном выгрузите данные данных Core iCloud в кучу CKRecords? Я проверю это. Я думаю, один из недостатков заключается в том, что я не могу взять резервную копию базы данных и поместить ее на свой флеш-накопитель (например, используя стратегию резервного копирования для Mac). –

ответ

1

iCloud поддерживает синхронизацию баз данных CoreData. См. this article для получения дополнительной информации.

Кроме того, вы можете рассмотреть CloudKit для хранения этих данных непосредственно в iCloud, поэтому к нему можно получить доступ на нескольких устройствах.

+0

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

+0

Резервное копирование обычно выполняется по обычной резервной копии устройства, но если вы хотите, чтобы оно было переносимым, вам, вероятно, необходимо включить функцию сохранения/восстановления.Самый простой способ сделать это, вероятно, с помощью обмена файлами iTunes: http://www.raywenderlich.com/1948/itunes-tutorial-for-ios-how-to-integrate-itunes-file-sharing-with-your-ios -app –

+0

Все еще работая и переваривая это, но похоже, что это означает, что он легко распределяет существующие резервные «документы» через iTunes, когда я их создаю программно. Я думаю, что это, безусловно, выглядит изучением. Тем не менее, мне нужно вручную создать резервный документ и создать процесс восстановления. –

Смежные вопросы