Документ, сохраненный на iCloud Drive, похоже, не загружается на iOS

Я разрешаю пользователю сохранять резервную копию своих данных с помощью диска iCloud. Это хорошо работает. Но если я переключусь на другое устройство с поддержкой iCloud Drive, я не смогу прочитать файл.

Я вижу файл резервной копии в приложении iCloud Drive, но он не загружен (отображается символ «загрузить из icloud»).

Можно ли принудительно загрузить все файлы, доступные в каталоге, если пользователь хочет восстановить резервную копию?

Использование Swift 2 на iOS 8/9.


person Christian    schedule 01.11.2015    source источник


Ответы (1)


Я решил это сам. Я проверю, доступен ли мой файл резервной копии и нужно ли его скачать. Если это так, я начну загрузку и сообщу пользователю, чтобы он повторил попытку через несколько секунд. Не лучшее решение, но пока работает.

func checkAndDownloadBackupFile() -> Bool{
    if(iCloudDocumentsURL != nil){
        let file = iCloudDocumentsURL!.URLByAppendingPathComponent("backup.file")
        let filemanager = NSFileManager.defaultManager();

        if !filemanager.fileExistsAtPath(file.path!){

            if filemanager.isUbiquitousItemAtURL(file) {
                let alertView:UIAlertView = UIAlertView()
                alertView.title =  "Warning"
                alertView.message = "iCloud is currently busy syncing the backup files. Please try again in a few minutes."
                alertView.addButtonWithTitle("OK")
                alertView.show()

                do {
                    try filemanager.startDownloadingUbiquitousItemAtURL(file)
                } catch{
                    print("Error while loading Backup File \(error)")
                }
            }
            return false
        } else{
            return true
        }
    }
    return true
}
person Christian    schedule 03.11.2015
comment
Согласно документам isUbiquitousItemAtURL не является способом получения статуса загрузки. Этот метод не отражает, действительно ли файл был загружен на какие-либо серверы iCloud. - person Vito Valov; 19.06.2019
comment
Но, похоже, это указывает на то, является ли файл / папка файлом / папкой iCloud. - person Chris Prince; 23.03.2020
comment
Этот метод работает для меня - для папок. В моем случае отображаются имена папок, но не их содержимое. Использование startDownloadingUbiquitousItem в каждой папке iCloud Drive запускает загрузку. - person Chris Prince; 23.03.2020
comment
Есть ли какие-нибудь передовые практики, как справляться с такими ситуациями? Я пытаюсь принудительно запустить startDownloadingUbiquitousItemAtURL в определенной папке в iCloud, но у меня это не работает. Это работает, только если вы знаете имя файла .. - person MosTwanTedT; 31.01.2021