Сохранить файл в iCloud Drive Documents (доступ пользователя)

Я хочу сохранить файл PDF в iCloud Drive. Пользователь должен иметь доступ к файлу через свое приложение iCloud Drive.

На данный момент я могу сохранить файл на iCloud Drive, но он находится в скрытом каталоге.

struct DocumentsDirectory {
    static let localDocumentsURL: NSURL? =  FileManager.default.urls(for:     FileManager.SearchPathDirectory.documentDirectory, in:     .userDomainMask).last! as NSURL
    static var url: NSURL? =   FileManager.default.url(forUbiquityContainerIdentifier: nil)! as NSURL
    static let iCloudDocumentsURL: NSURL? = url?.appendingPathComponent("Documents")! as! NSURL
}

С помощью этого кода я получаю скрытый каталог на iCloud Drive (который относится к моему приложению).

Теперь мой вопрос: могу ли я сохранить файл в стандартной папке документов в iCloud Drive? Или я могу создать папку для документов из моего приложения, которую может видеть пользователь?


person Jonathan K    schedule 23.08.2017    source источник
comment
на самом деле я заставил это работать. Единственный способ, который я вижу, - это использовать UIDocumentPickerViewController. Если вы знаете лучшее решение, где вам не нужен Picker, я был бы признателен.   -  person Jonathan K    schedule 23.08.2017


Ответы (1)


Попробуйте сохранить файл в каталоге «Документы», чтобы убедиться, что файл сохранен в общедоступном каталоге пользователей и виден в приложении iCloud.

func setupiCloudDriveForFileExport() {

    if let iCloudDocumentsURL = NSFileManager.defaultManager().URLForUbiquityContainerIdentifier(nil)?.URLByAppendingPathComponent("Documents") {
        if (!NSFileManager.defaultManager().fileExistsAtPath(iCloudDocumentsURL.path!, isDirectory: nil)) {
            do {
                try NSFileManager.defaultManager().createDirectoryAtURL(iCloudDocumentsURL, withIntermediateDirectories: true, attributes: nil)
            }catch let error as NSError {
                print(error)
            }
        }
    }
}

Этот код проверяет наличие каталога «Документы» в iCloud и, если нет, создает новый.

person Rakshith Nandish    schedule 08.09.2017