Установить Повсеместное отображение "файл уже существует" для файла, который не

В AppDelegate.swift при первом запуске намерение состоит в том, чтобы поместить некоторые образцы документов в локальную папку «Документы» или в папку «Документы iCloud», если iCloud включен.

    var templates = NSBundle.mainBundle().pathsForResourcesOfType(AppDelegate.myExtension, inDirectory: "Templates")
    dispatch_async(appDelegateQueue) {
        self.ubiquityURL = NSFileManager.defaultManager().URLForUbiquityContainerIdentifier(nil)
        if self.ubiquityURL != nil && templates.count != 0 {
            // Move sample documents from Templates to iCloud directory on initial launch
            for template in templates {
                let tempurl = NSURL(fileURLWithPath: template)
                let title = tempurl.URLByDeletingPathExtension?.lastPathComponent

                    let ubiquitousDestinationURL = self.ubiquityURL?.URLByAppendingPathComponent(title!).URLByAppendingPathExtension(AppDelegate.myExtension)
                    // let exists = NSFileManager().isUbiquitousItemAtURL(ubiquitousDestinationURL!)
                    do {
                        try NSFileManager.defaultManager().setUbiquitous(true, itemAtURL: tempurl, destinationURL: ubiquitousDestinationURL!)
                    }
                    catch let error as NSError {
                        print("Failed to move file \(title!) to iCloud: \(error)")
                    }
            }
        }
        return
    }

Перед запуском я удаляю приложение с устройства и убеждаюсь, что в iCloud нет документа с таким именем. При первом запуске без iCloud образцы документов правильно копируются в локальную папку «Документы». В iCloud этот код запускается, и вызов setUbiquitous приводит к ошибке, в которой говорится, что файл уже существует. Прокомментированный вызов isUbiquitousItemAtURL также возвращает true.

Что может заставлять эти вызовы регистрировать существование файла, которого, я уверен, нет? Спасибо!


person JKaz    schedule 07.10.2016    source источник


Ответы (2)


Файл уже существует, просто замените его.

person neprocker    schedule 07.10.2016
comment
Других свидетельств их существования нет. Мета-запрос, показывающий облачные файлы, не находит их, но находит все остальные документы. Не могу найти их в файловой системе Mac (папка iCloud). Не могу найти их с помощью iMazing. Я понимаю, что он находит что-то, что заставляет его генерировать эту ошибку, но я не могу понять, что и где. - person JKaz; 07.10.2016

Основное решение ... во всех пробах и ошибках я забыл вернуть «Документы» в URL-адрес. Должно быть:

let ubiquitousDestinationURL = self.ubiquityURL?.URLByAppendingPathComponent("Documents").URLByAppendingPathComponent(title!).URLByAppendingPathExtension(AppDelegate.myExtension)

Без этого я записал файл не в тот каталог, и поэтому я не мог его увидеть обычными средствами.

person JKaz    schedule 08.10.2016