尝试在应用程序支持中创建目录时拒绝权限
问题描述:
我试图在应用程序支持目录内创建一个目录,但每次都失败。尝试在应用程序支持中创建目录时拒绝权限
下面的代码:
func getDownloadableContentPath() -> String {
let paths = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true)
var directory = paths[0]
directory = URL(fileURLWithPath: directory).appendingPathComponent("IAP").absoluteString
let fileManager = FileManager.default
if !fileManager.fileExists(atPath: directory) {
do {
try fileManager.createDirectory(atPath: directory, withIntermediateDirectories: true, attributes: nil)
}
catch {
print("Error: Unable to create directory: \(error)")
}
var url = URL(fileURLWithPath: directory)
var values = URLResourceValues()
values.isExcludedFromBackup = true
do {
try url.setResourceValues(values)
}
catch {
print("Error: Unable to exclude directory from backup: \(error)")
}
}
return directory
}
的错误是:
Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “IAP” in the folder “Application%20Support”." UserInfo={NSFilePath=file:///var/mobile/Containers/Data/Application/FF91E234-F856-492E-8C91-9EFAEA3735D4/Library/Application%20Support/IAP, NSUnderlyingError=0x174245430 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}
我试图改变追加路径组件,试图文档目录,所有的失败,同样的错误。
答
的问题是在这条线
directory = URL(fileURLWithPath: directory).appendingPathComponent("IAP").absoluteString
这回文件路径,而所需的目录的简单路径下的功能。
fileManager.createDirectory(atPath: directory, withIntermediateDirectories: true, attributes: nil)
因此,要么改变这一行
directory = URL(fileURLWithPath: directory).appendingPathComponent("IAP").absoluteString
这一行
directory = directory + "/IAP"
OR 变化低于线
let url = URL(fileURLWithPath: directory).appendingPathComponent("IAP")
同一行
,利用此功能来创建目录
fileManager.createDirectory(at: directory, withIntermediateDirectories: true, attributes: nil)
希望这有助于你。