我为 macOS 制作了一个音乐应用程序,需要访问磁盘上的文件。我可以获得正确的网址,但无法访问该文件。为了解决这个问题,我在这里创建了一个简洁的代码片段来专注于问题本身。
.onAppear {
var url = FileManager.default.homeDirectoryForCurrentUser
url.appendPathComponent("Downloads/Test.txt")
var text: String = ""
do {
text = try String(contentsOf: url)
} catch {
print("ERROR: \(error.localizedDescription)")
}
}
输出会是这样的
ERROR: The file “Test.txt” couldn’t be opened because you don’t have permission to view it.
。所以我注意到App Sandbox
中的Targets > Signing & Capabilities
。但在文件访问列表中(如下图所示),只有 User Selected File
、Downloads Folder
、Pictures Folder
、Music Folder
和 Movie Folder
。所以我想出了3个问题:
User Selected File
是什么意思?这是否意味着用户可以选择我的应用程序访问的某些特定文件?如果是,用户如何选择它们?Desktop Folder
功能,如何访问其他文件夹,例如 App Sandbox
?App Sandbox
,在用户同意的情况下我可以通过默认的系统弹出窗口访问我想要的每个文件夹。但是删除App Sandbox
意味着什么呢?当用户安装我的应用程序或其他应用程序时,它是否会以某种方式使我的应用程序“不受信任”?会造成安全问题吗?如果你能告诉我主要开发人员在遇到这个问题时遵循的约定那就更好了。我非常感谢您的帮助。
“homeDirectoryForCurrentUser”在最新版本的 IOS 中不可用。我正在尝试寻找其他方法。