Я работаю над приложением для 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"
Вот мой код:
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)
}
}
}
}
Код работает нормально, если я создаю каталог внутри «Документы». Но по какой-то причине я не могу создавать внутри рабочего стола, даже если я предоставил всем доступ на чтение и запись к рабочему столу. Я также добавил снимок экрана с каталогом, в котором я должен его создать.
Я попытался создать каталог в разделе «Загрузки», но у меня возникла такая же проблема с разрешением. Но, опять же, мне удалось создать каталог внутри «Библиотеки». Итак, похоже, что ОС не дает разрешения на создание внутри каталога псевдонимов, поскольку и Рабочий стол, и Загрузки являются псевдонимами.
Любая помощь высоко ценится.

Это потому, что ваше приложение macOS работает в «песочнице приложения», проверьте вкладку «Возможности» в целевых настройках.
~/Library/Containers/%BundleID%/Data/Desktop - это программная ссылка на рабочий стол пользователя, и у вас нет прав на запись (в зависимости от вашего файла прав даже нет прав на чтение).
В зависимости от вашего варианта использования вы можете
Downloads и т. д.) илиОй, плохо. Я проверил тестовую среду приложения, потому что у меня постоянно возникали проблемы с сетью, и исправление заключалось в том, чтобы включить входящие / исходящие подключения, для которых я должен включить песочницу приложения, но я не знал, что мне нужно повторно отключить песочницу приложения после включение этих двух вариантов исправления сети. Весь мой день был потрачен зря только из-за этого. Спасибо, что указали на проблему. Отключен режим песочницы, и проблема исправлена.
Помимо того, что упомянуто @ChaosCoder, нам также необходимо установить для NSOpenPanel.canCreateDirectories значение true:
panel.canCreateDirectories = true
На меня никакого эффекта.
Возможный дубликат Папка записи в Mac OS X с активной песочницей