Я ориентируюсь на iOS7 и использую iCloud с UIManagedDocument
. Я хотел бы знать, что делать в этих двух случаях:
1) Первый случай: первый запуск приложения
Это первый запуск, когда мы еще не знаем, хочет ли пользователь использовать iCloud или нет, и мы должны предположить, что он не хочет его использовать, пока мы его не спросим. Как только мы узнаем, его выбор будет сохранен в пакете настроек приложения, и позже он сможет передумать.
Когда мое приложение запускается, первое отображаемое представление запускает инициализацию UIManagedDocument с помощью [[UIManagedDocument alloc] initWithFileURL:url]
. Он делает это, потому что должен знать, сколько строк он должен отобразить в своей таблице.
На данный момент это первый запуск, и мне все еще нужно спросить пользователя, я предполагаю, что он не хочет использовать iCloud, поэтому UIManagedDocument инициализируется без набора persistentStoreOptions
(NSPersistentStoreUbiquitousContentNameKey
и NSPersistentStoreUbiquitousContentURLKey
).
Затем файл создается на диске с
[UIManagedDocument saveToURL: URL
forSaveOperation: UIDocumentSaveForCreating
completionHandler: ^(BOOL success){
if(success){
//Do something with the document
}
}];
затем появляется вид. Поскольку это первый запуск, я должен спросить пользователя, хочет ли он использовать iCloud или нет.
Я показываю UIAlertView
из [viewDidAppear:animated]
Если он ответит "НЕТ", то уже все в порядке. Но что мне делать, если он скажет "ДА"??
Должен ли я закрыть UIManagedDocument
и перенести БД или достаточно установить NSPersistentStoreUbiquitousContentNameKey
и NSPersistentStoreUbiquitousContentURLKey
в persistentStoreOptions
документа?
2) Второй случай: через пару дней пользователь передумал
Пользователь решил включить iCloud, но через день передумал. Он переключается на НЕТ опции iCloud в пакете настроек приложения. Когда приложение запускается, я проверяю изменение этой опции и обнаруживаю, что она переключилась с ДА на НЕТ. Как я понял из подсказок, которые я получил на SO, правильный путь должен заключаться в отображении UIAlertView с вопросом, хочет ли он:
а) Храните документы на устройстве
б) Удалить документы с устройства
в) Продолжайте использовать iCloud
Что делать для вариантов а) и б)? Миграция БД для варианта а) и воссоздание БД с нуля для варианта б)?