Как программно сохранить PDF-документ на iCloud Drive с помощью Swift?

Мое приложение создает PDF-файл, и я хочу сохранить этот PDF-документ на iCloud Drive программно, используя swift 3.

Для примера здесь я использовал текстовый файл для сохранения в iCloud Drive.

Это мой код:

func copyDocumentsToiCloudDrive() {
    var error: NSError?
    let iCloudDocumentsURL = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("myCloudTest")

    do{
        //is iCloud working?
        if  iCloudDocumentsURL != nil {
            //Create the Directory if it doesn't exist
            if (!FileManager.default.fileExists(atPath: iCloudDocumentsURL!.path, isDirectory: nil)) {
                //This gets skipped after initial run saying directory exists, but still don't see it on iCloud
                try FileManager.default.createDirectory(at: iCloudDocumentsURL!, withIntermediateDirectories: true, attributes: nil)
            }
        } else {
            print("iCloud is NOT working!")
            //  return
        }

        if error != nil {
            print("Error creating iCloud DIR")
        }

        //Set up directorys
        let localDocumentsURL = FileManager.default.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: .userDomainMask).last! as NSURL

        //Add txt file to my local folder
        let myTextString = NSString(string: "HELLO WORLD")
        let myLocalFile = localDocumentsURL.appendingPathComponent("myTextFile.txt")
        _ = try myTextString.write(to: myLocalFile!, atomically: true, encoding: String.Encoding.utf8.rawValue)

        if ((error) != nil){
            print("Error saving to local DIR")
        }

        //If file exists on iCloud remove it
        var isDir:ObjCBool = false
        if (FileManager.default.fileExists(atPath: iCloudDocumentsURL!.path, isDirectory: &isDir)) {
            try FileManager.default.removeItem(at: iCloudDocumentsURL!)
        }

        //copy from my local to iCloud
        if error == nil {
            try FileManager.default.copyItem(at: localDocumentsURL as URL, to: iCloudDocumentsURL!)
        }
    }
    catch{
        print("Error creating a file")
    }

}

Этот код работает без ошибок. Но не показывает сохраненный файл в iCloud Drive.

Я ссылаюсь на эту ссылку и написал это код.


person anas.p    schedule 27.08.2017    source источник
comment
Получил выход.. !! У меня была такая же проблема. Папка создается, но файла внутри нет. Можешь направить меня?   -  person McDonal_11    schedule 25.02.2018
comment
У меня такая же проблема, у вас есть решение этой проблемы? Если ДА, то не могли бы вы поделиться им   -  person Mehul Akoliya    schedule 03.05.2018
comment
Пока нет решений. :(   -  person anas.p    schedule 07.05.2018


Ответы (1)


Предполагая, что ваш код работает должным образом, попробуйте обновить версию и номер сборки вашего приложения в info.plist. Изменение этих значений необходимо для отражения изменений iCloud.

person Rakshith Nandish    schedule 08.09.2017
comment
В моем случае это сработало только после обновления номера сборки. - person Victor Sergienko; 30.10.2019