FileManager.createDirectory завершается ошибкой с кодом NSCocoaErrorDomain: 518

Я делаю

    let tempDirectory = URL(string: "\(NSTemporaryDirectory())video/")!
    do {
        try FileManager.default.createDirectory(
            at: tempDirectory,
            withIntermediateDirectories: true)
    } catch { report(error) }

и это часто выбрасывает код NSCocoaErrorDomain: 518.

Есть идеи о причине? Я думал, что мог, потому что там уже что-то есть, поэтому я добавил

    var isDir: ObjCBool = false
    if FileManager.default.fileExists(
        atPath: tempDirectory.absoluteString,
        isDirectory: &isDir
    ) {
        if isDir.boolValue {
            print("Temp directory exists on launch")
        }
        else {
            print("Temp directory exists on launch and is a file")
        }
        return
    }

но это, кажется, ничего не ловит

1 ответ

Решение

Ваше здание tempDirectory не правильно Ты хочешь:

let tempDirectory = URL(fileURLWithPath: NSTemporaryDirectory()). appendingPathComponent("video")

Проблема с вашим кодом заключается в том, что вы не передавали строку URL-адреса значения URL(string:), Поскольку у вас есть путь к файлу, вы должны использовать URL(fileURLWithPath:), И создайте пути /URL-адреса, используя предоставленные методы, чтобы обеспечить правильное добавление слешей и других частей.

Напечатайте свою ценность tempDirectory из вашего исходного кода, а затем распечатайте новое значение из кода в моем ответе. Обратите внимание на ключевое отличие.

Ваш URL будет примерно таким:

/ Вар /...

и это может пропустить слеш перед "видео".

Правильный URL файла будет примерно таким:

Файл:/// вар /...

Другие вопросы по тегам