【发布时间】:2021-10-24 17:47:46
【问题描述】:
我正在使用这个简单的工具来预览我的应用程序中的不同文件,但没有一个文件被成功预览。
我第一次尝试预览任何文件时,它会打开带有消息Unsupported file format 的预览控制器,而其他任何时候它只显示文件名和单词data(见图)。
这是实现(注意打印语句):
extension FileShareVC: QLPreviewControllerDataSource, QLPreviewControllerDelegate {
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
filesList.count
}
func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
let url = NSURL(fileURLWithPath: filesList[index].filePath ?? "", isDirectory: false)
print(filesList[index].filePath!)
//prints file:///var/mobile/Containers/Data/Application/AB608864-C682-47BB-8396-2D456430879E/Documents/F9RIB62HBUAW.jpeg
print("url: \(url)")
//prints file:/var/mobile/Containers/Data/Application/AB608864-C682-47BB-8396-2D456430879E/Documents/F9RIB62HBUAW.jpeg -- file:///
return url
}
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let quickLookViewController = QLPreviewController()
quickLookViewController.dataSource = self
quickLookViewController.delegate = self
quickLookViewController.currentPreviewItemIndex = indexPath.row
present(quickLookViewController, animated: true)
}
【问题讨论】:
-
因为 filesList 是具有属性 filepath 的 File 类的数组
-
在下面查看我的帖子
-
另请注意,您的应用已被沙盒化,并且每次启动时其位置都会发生变化。如果您需要保留该信息,则应仅保存其名称和目录,并在需要时重构您的 URL。
-
嗯,这是关于沙盒的非常好的信息,但我该如何改变呢?我现在将我的文件存储在 .libraryDirectory 中,然后将它们发送到 API。 API 会返回包含不再有效的文件路径的 filesList,对吗?解决办法是什么?
-
这取决于您是否有子文件夹。如果你不只是保存 lastPathComponent
标签: swift quicklook qlpreviewcontroller files-app