Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在macOS中访问受限文件(/User/User/Library/Messages/xxx)?_Swift_Macos_Permissions - Fatal编程技术网

Swift 如何在macOS中访问受限文件(/User/User/Library/Messages/xxx)?

Swift 如何在macOS中访问受限文件(/User/User/Library/Messages/xxx)?,swift,macos,permissions,Swift,Macos,Permissions,我正在尝试找出如何访问macOS应用程序(swift)中的~/Library/Messages文件夹。具体来说,我正在尝试访问chat.db文件 如果我执行以下操作(没有沙盒),我会得到一个打开的错误 let url = try? FileManager.default.url(for: .libraryDirectory, in: .userDomainMask, appropriateFor: nil, create: false) url = url!.appendingPathCompo

我正在尝试找出如何访问macOS应用程序(swift)中的
~/Library/Messages
文件夹。具体来说,我正在尝试访问
chat.db
文件

如果我执行以下操作(没有沙盒),我会得到一个打开的错误

let url = try? FileManager.default.url(for: .libraryDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
url = url!.appendingPathComponent("Messages", isDirectory: true).appendingPathComponent("chat.db", isDirectory: false)

// Then open this file...
如果我改为使用打开的对话框将用户指向文件夹,我会在文件夹图标上看到一个禁止标志

我需要什么权限才能访问此文件?我尝试过可访问性,但似乎不是这样(而且我也没有授予iTerm可访问性,我仍然可以转到该文件夹)。任何一个指针都很感激。谢谢

(我只需要访问这一个文件。如果有办法在sandbox中进行访问,我很愿意这样做。如果不可能,请求任何权限都可以。)

您需要允许需要访问该路径的应用程序进行“完全磁盘访问”:


这是macOS Mojave中隐私变化的一部分。

我甚至无法从终端窗口列出
~/Library/Messages
的内容,即使使用
sudo ls
,也无法获得“不允许操作”。这强烈地暗示我,你不应该看里面。您需要找到另一种方法,可能是使用一些API,那么您真正想做什么呢?我正在尝试访问iMessage聊天数据库。是的,我知道这通常是一个系统文件夹,不应该被访问。但是,当应用程序想要访问时,有正当的理由,而且macOS比iOS更灵活。有没有办法提示用户授予访问权限?您不能让系统提示,但可以显示自己的提示。您可以使用URL方案将用户导航到系统首选项中的正确位置:。但用户必须手动将您的应用添加到列表中。