您无权在Mac Mojave中保存文件

时间:2018-10-10 10:56:52

标签: macos file-manager macos-mojave swift4.2 macos-app-extension

在我的macOS应用中,我正在尝试使用以下扩展名创建目录

extension URL {
    static func createFolder(folderName: String, folderPath:URL) -> URL? {
        let fileManager = FileManager.default
        let folderURL = folderPath.appendingPathComponent(folderName)
        // If folder URL does not exist, create it
        if !fileManager.fileExists(atPath: folderURL.path) {
            do {
                // Attempt to create folder
                // try fileManager.createDirectory(at: folderURL, withIntermediateDirectories: true, attributes: nil)
                // try fileManager.createDirectory(atPath: folderURL.path, withIntermediateDirectories: true, attributes: nil)
                try fileManager.createDirectory(atPath: folderURL.relativePath, withIntermediateDirectories: true, attributes: nil)
            } catch {
                print(error.localizedDescription + ":\(folderURL.path)")
                return nil
            }
        }
        return folderURL
    }
}

当我调用此调用时,会给我错误

  

您无权将“ FolderName”文件保存在文件夹中   “ SelectedFolder”。:/用户/ USERNAME /工作区/ SelectedFolder / FolderName

我看过类似的post,并尝试了所有方法,但仍然给我错误,我在这里遗漏了什么吗?感谢您的帮助

2 个答案:

答案 0 :(得分:2)

我假设您的应用已沙箱化。因此,您无权为要尝试的位置写文件夹。

如果不打算用于沙盒,则可以禁用“应用沙盒”,可以通过单击项目文件>目标名称,选择功能选项卡并关闭“应用沙盒”将其关闭。

文件系统编程指南:Prometheus

此处为应用沙盒文档:https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html

您也可以在安全范围内的书签中查找持久性资源。

此处的文档:

https://developer.apple.com/library/archive/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html

https://developer.apple.com/library/archive/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html#//apple_ref/doc/uid/TP40011183-CH3-SW16

答案 1 :(得分:0)

这似乎是文件夹名称设置不合理

USERNAME似乎有点奇怪

如果您将其显式设置为真实的东西,那么您知道会发生什么?