无法发布 URL 的文件扩展名

Couldn't issue file extension for URL

我卡住了,不知道该怎么办。我希望能够使用 QuickLook 在我的应用程序中显示 PDF。我已将我的 PDF 文件导入到我的项目中,并使用下面的代码来显示它。

    func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
    //let bundle = Bundle.main
    let resourcePath = Bundle.main.resourceURL!.appendingPathComponent("Manuals/\(nodeName).pdf").path
    //let path = resourcePath + bundle.path(forResource: nodeName, ofType: "pdf")!
    let url = URL(fileURLWithPath: resourcePath)
    return url as QLPreviewItem
}

生成的URL是

"file:///var/containers/Bundle/Application/3923DC1F-386E-4038-A8B1-A855483F4C06/Application%20v1.app/Manuals/CYB.pdf"   

我得到的错误是

Couldn't issue file extension for url: file:///var/containers/Bundle/Application/3923DC1F-386E-4038-A8B1-A855483F4C06/Application%20v1.app/Manuals/CYB.pdf #PreviewItem

在显示屏上,我只是看到一个灰色屏幕,上面有文件名和下方的 PDF 文档。有谁知道我做错了什么。我已经厌倦了 google 答案,但解决方案对我不起作用或答案已过时。

任何帮助都会很棒。如果您需要更多信息,请告诉我,我可以提供。

谢谢

要访问主包中文件夹内的文件,请将名为 Manuals 的文件夹拖到项目 xcode 和 select create references folder

//

然后使用

访问资源
let fileUrl = Bundle.main.url(forResource:\(nodeName) ,withExtension:"pdf",subdirectory: "Manuals")  

感谢所有对此问题提出意见的人。我终于修好了。事实证明,这与我发布的代码无关,但由于我的 iPad 而不是 运行 iOS 11.3。由于某种原因,此问题发生在 11.2.x,但在 11.3 中得到修复。我不知道为什么我没有早点更新,但它终于工作了。希望遇到此问题的其他任何人都觉得这很有用,并且不会浪费一整天试图弄清楚为什么它不起作用。

再次感谢。

这是 iOS 11.2 中的已知问题。可能的解决方案是在显示之前将文件复制到文档目录中的临时文件。 https://forums.developer.apple.com/thread/91835