在iOS 11.2上预览PDF文件

时间:2018-03-10 18:16:34

标签: ios swift ios11 uidocumentinteraction quicklook

我遇到了这个错误,导致我的应用无法使用UIDocumentInteractionControllerQLPreviewController显示PDF:https://forums.developer.apple.com/thread/91835

根据建议,解决方案是将文件复制到文档或tmp文件夹并从那里加载文件。

但是,这对我不起作用。从.documentDirectoryNSTemporaryDirectory()加载文件会产生相同的错误,但现在不仅在设备上,而且在模拟器中。

修改 以下代码为我解决了这个问题:

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/(我不知道为什么)。

1 个答案:

答案 0 :(得分:0)

检查资源的区分大小写(文件名)。

添加代码的任何屏幕截图。