首页 > 解决方案 > 如何在 macos 上使用 swift 在下载文件夹中创建目录?权限异常。

问题描述

我正在努力使用以下代码在 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”. 

我怎样才能解决这个问题?

标签: swiftmacoscocoapermissions

解决方案


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

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

在 App Sandbox 下启用对下载文件夹的读/写

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


推荐阅读