【问题标题】:FileManager.createDirectory fails with NSCocoaErrorDomain Code: 518FileManager.createDirectory 失败,出现 NSCocoaErrorDomain 代码:518
【发布时间】:2016-11-06 00:36:25
【问题描述】:

我在做

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

这通常会引发 NSCocoaErrorDomain Code: 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
    }

但这似乎并没有抓住任何东西

【问题讨论】:

    标签: ios url temporary-directory


    【解决方案1】:

    tempDirectory 的构建不正确。你想要:

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

    您的代码的问题是您没有将值 URL 字符串传递给 URL(string:)。由于您有文件路径,因此您需要使用URL(fileURLWithPath:)。并使用提供的方法构建路径/URL,以确保正确添加斜线和其他部分。

    从您的原始代码中打印您的 tempDirectory 值,然后从我的答案中的代码中打印新值。注意关键区别。

    您的网址将类似于:

    /var/...

    它可能缺少“视频”之前的斜线。

    正确的文件 URL 类似于:

    file:///var/...

    【讨论】:

      猜你喜欢
      • 2021-04-14
      • 2012-04-23
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 2016-04-01
      • 2018-09-04
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多