我使用这个简单的工具在我的应用程序中预览不同的文件,但是没有一个是成功预览的。
第一次尝试预览任何文件时,它会打开带有message Unsupported file format的预览控制器,而其他任何时候它只显示文件名和word 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)
}我不知道为什么我的url在文件路径上附加-- file:///,也许这会导致问题?


发布于 2021-08-24 21:50:22
问题是您使用了错误的初始化程序。您正在将一个absoluteString传递给期望路径的初始化器(您的字符串包含方案file://)。顺便说一句,称filePath为absoluteString是有误导性的。
guard let url = URL(string: filesList[index].filePath ?? "") else {
return // an alternate URL or a just create a fatalError
}还要注意的是,你的应用程序是沙箱和它的位置将改变在每次发射。如果您需要持久化该信息,您应该只保存它的名称和目录,并在需要时重新组合您的URL。
编辑更新:
请注意,不应该将文件直接放置到库文件夹中。文件系统基础

https://stackoverflow.com/questions/68908482
复制相似问题