skJ*_*osh 0 macos nsfilemanager
我正在开发Mac应用程序。我一直在努力在Mac OS的“ 桌面 ”中创建目录。我在High Sierra上工作。一切正常,但突然之间该应用无法在桌面中创建目录。我收到以下权限错误。我正在使用Xcode 9.3和Swift 4.1。
Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “TestDir” in the folder “Desktop”." UserInfo={NSFilePath=/Users/sj/Library/Containers/com.user.TestSync/Data/Desktop/TestDir, NSUnderlyingError=0x60400044cc60 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
class DBManager: NSObject {
static func getDirectoryPath() -> URL {
let homeDirectory = URL(fileURLWithPath: NSHomeDirectory())
let desktopPath = homeDirectory.appendingPathComponent("Desktop")
let databaseFolder = desktopPath.appendingPathComponent("TestDir")
return databaseFolder
}
static func createFolderIfNotExist() {
let databaseFolder = DBManager.getDirectoryPath()
if !FileManager().fileExists(atPath: databaseFolder.path) {
do {
try FileManager.default.createDirectory(atPath: databaseFolder.path, withIntermediateDirectories: true, attributes: nil)
} catch {
print(error)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我要在“ Documents ”中创建目录,则代码可以正常工作。但是由于某种原因,即使我向所有人提供了对Desktop的读/写访问权限,也无法在Desktop内部创建。我还包括了必须创建目录的屏幕快照。
我试图在“下载”中创建目录,但以相同的权限问题结束。但是,我再次成功在“库”中创建目录。因此,由于桌面和下载都是别名,因此操作系统似乎未授予在别名目录内创建权限。
非常感谢您的帮助。
那是因为您的macOS应用程序正在“应用程序沙箱”中运行,因此请在目标设置中检查“功能”选项卡。
~/Library/Containers/%BundleID%/Data/Desktop 是到用户桌面的软链接,并且您没有写权限(取决于您的权利文件甚至没有读权限)。
根据您的用例,您可以
Downloads等)中启用读/写功能,或者