我遇到了这个错误,导致我的应用无法使用UIDocumentInteractionController
或QLPreviewController
显示PDF:https://forums.developer.apple.com/thread/91835
根据建议,解决方案是将文件复制到文档或tmp文件夹并从那里加载文件。
但是,这对我不起作用。从.documentDirectory
或NSTemporaryDirectory()
加载文件会产生相同的错误,但现在不仅在设备上,而且在模拟器中。
修改 以下代码为我解决了这个问题:
func copyFiles(fileName: String) -> URL {
let filemgr = FileManager.default
filemgr.delegate = self
let tempDocsFolder = URL.init(fileURLWithPath: NSTemporaryDirectory()).path
// my fileName is in format "file.pdf"
let fileSplit = fileName.components(separatedBy: ".")
let filePath = Bundle.main.path(forResource: fileSplit[0], ofType: fileSplit[1])
let destPath = "\(tempDocsFolder)/\(fileName)"
do {
try? filemgr.copyItem(atPath: filePath!, toPath: destPath)
}
return URL.init(fileURLWithPath: destPath)
}
然后返回的URL被送到UIDocumentInteractionController
。之前它对我不起作用的原因是因为我试图将我的文件复制到/tmp/documents/
,但文件必须复制到tmp文件夹的根目录:/tmp/
(我不知道为什么)。
答案 0 :(得分:0)
检查资源的区分大小写(文件名)。
添加代码的任何屏幕截图。