如何解决Swift FileManager因权限无法打开文件并实现文件访问

问题描述 投票:0回答:1

我为 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个问题:

  1. User Selected File
    是什么意思?这是否意味着用户可以选择我的应用程序访问的某些特定文件?如果是,用户如何选择它们?
  2. 如果我在这里保留
    Desktop Folder
    功能,如何访问其他文件夹,例如
    App Sandbox
  3. 我还注意到右上角的垃圾桶图标。如果我删除
    App Sandbox
    ,在用户同意的情况下我可以通过默认的系统弹出窗口访问我想要的每个文件夹。但是删除
    App Sandbox
    意味着什么呢?当用户安装我的应用程序或其他应用程序时,它是否会以某种方式使我的应用程序“不受信任”?会造成安全问题吗?

如果你能告诉我主要开发人员在遇到这个问题时遵循的约定那就更好了。我非常感谢您的帮助。

Screenshot of app sandbox

swift macos apple-developer
1个回答
0
投票

“homeDirectoryForCurrentUser”在最新版本的 IOS 中不可用。我正在尝试寻找其他方法。

© www.soinside.com 2019 - 2024. All rights reserved.