如何在macos上使用swift在下载文件夹中创建目录?许可例外。

时间:2018-05-06 13:45:13

标签: swift macos cocoa permissions

我很难在macos上的用户下载目录中使用以下代码创建一个文件夹:

static func createFolderInDownloadsDirectory() {
    let downloadsDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first!
    let downloadsDirectoryWithFolder = downloadsDirectory.appendingPathComponent("FolderToCreate")

    do {
        try FileManager.default.createDirectory(at: downloadsDirectoryWithFolder, withIntermediateDirectories: true, attributes: nil)
    } catch let error as NSError {
        print(error.localizedDescription)
    }
}

这是输出:

You don’t have permission to save the file “FolderToCreate” in the folder “Downloads”. 

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

Xcode 9及更高版本默认启用沙盒,严重限制了与系统的交互。但是,您仍然可以通过向应用添加权利来写入“下载”文件夹:

选择目标,然后选择功能并将下载文件夹设置为读/写:

Enable read/write to Downloads Folder under App Sandbox

如果您无意通过Mac App Store分发应用,则可以关闭沙盒。您的应用程序仍然可以签名,但用户在首次启动您的应用时会收到警告。