gpt4 book ai didi

macos - QLPreviewView 无法在沙盒中显示快速预览

转载 作者:行者123 更新时间:2023-12-03 16:11:25 25 4
gpt4 key购买 nike

我使用 QLPreviewView 在应用中显示快速预览预览。没有沙箱,效果很好,但是一旦将应用程序更改为沙箱,预览就无法显示。

我在控制台中发现错误:QuickLookUIHelpe(20786) 拒绝文件读取数据 XXX。

我使用了安全范围书签com.apple.security.files.user-selected.read-write来授予用户主目录的访问权限,然后:

[allowedURL startAccessingSecurityScopedResource];
self.myPreiviewItem.myURL = fileURL;
self.myQLPreviewView.previewItem = self.myPreiviewItem;
[self.myQLPreviewView refreshPreviewItem];
[allowedURL stopAccessingSecurityScopedResource];

有了这些,我可以删除用户主目录的文件,但 QLPreviewView 无法工作。我不知道这两个场景有什么区别,QLPreviewView 是否需要更多沙箱?

如果我在权限中添加com.apple.security.files.downloads.read-only,则“下载”中的文件可以预览,但用户主目录下的其他文件无法预览已预览。

最佳答案

终于找到解决办法了!

refreshPreviewItem 是一个异步调用,因此在 Mac 加载预览完成之前,以下 api stopAccessingSecurityScopedResource 立即关闭访问,导致 Mac 无法加载预览成功。

所以解决方案是:不要在这里调用stopAccessingSecurityScopedResource,保持allowedURL的访问权限,直到不需要QL预览功能,然后调用stopAccessingSecurityScopedResource 那里,例如关闭窗口时。

关于macos - QLPreviewView 无法在沙盒中显示快速预览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30571120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com