Согласно WWDC 701 «Достижения в области безопасности macOS», Apple предлагает использовать FileManager.default.isReadableFile, FileManager.default.isWritableFile для проверки авторизации файловой системы. Но эти API всегда возвращают true, и мы всегда можем удалить файлы в папке, независимо от того, позволяет ли пользователь приложению получать доступ к этим папкам или нет.
Ниже приведен код и явления
let path = "/Users/xxx/Documents"
let file = "/Users/xxx/Documents/1.png"
let isReadable = FileManager.default.isReadableFile(atPath: file) //return true
let isWritable = FileManager.default.isWritableFile(atPath: file) //return true
try? FileManager.default.removeItem(atPath: file) // file will be deleted
guard let files = try? FileManager.default.contentsOfDirectory(atPath: path) else {
return
} //This will trigger user consent prompt for the first time
Файл в защищенной папке может быть удален до авторизации. Это ошибка Apple?