【发布时间】:2019-10-08 03:46:16
【问题描述】:
我已经看到这个问题在这里问了十几次,但解决方案似乎无法解决我的情况。
我有一些内容需要存储在“应用程序支持”目录中,但尝试在那里写入时仍然收到错误消息。
func assetFilesDirectory(asset: Asset, shouldCreate: Bool) -> URL? {
do {
let applicationSupportFolderURL = try FileManager.default.url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let folder = applicationSupportFolderURL.appendingPathComponent("\(asset)")
if !FileManager.default.fileExists(atPath: folder.path) {
if shouldCreate {
try FileManager.default.createDirectory(at: folder, withIntermediateDirectories: true, attributes: nil)
} else {
return nil
}
}
return folder
} catch {
print(error)
return nil
}
}
当这段代码运行时,我不断收到以下错误:
“您无权将文件“asset-backgrounds”保存在“Application Support”文件夹中。”
我尝试在下一行中切换 create 参数的值,但我也遇到了同样的错误,只是引用了 Application Support 目录和图书馆。
let applicationSupportFolderURL = try FileManager.default.url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
我没有看到任何理由说明这会对 API 产生任何影响,但作为信息,我在 tvOS 平台(物理设备)上运行此代码。没有任何信息表明 Application Support 应该在 tvOS 上受到权限限制。
【问题讨论】:
-
如果我尝试在“应用程序支持”中创建文件夹,此行会引发错误 - 尝试 FileManager.default.createDirectory(at: folder, withIntermediateDirectories: true, attributes: nil)
-
哦,当然,我明白了。对于那个很抱歉。但这太令人困惑了:asset 怎么可能是path 组件?这里需要的是一个字符串。
-
对不起,不清楚 - 资产是字符串类型的枚举
-
好吧,我尝试了一个字符串,它对我来说效果很好。会不会是因为有了 Asset 让你感到困惑?
-
我会在几个小时后尝试这个,当我回到那台机器上时 - 谢谢!
标签: ios swift tvos nsfilemanager