添加我自己的答案,因为我遇到了类似的问题,并且在我寻找解决方案时出现了这个问题。我遇到的问题是 pdf 可以在模拟器中打开,但是当我尝试在设备上打开时,它只会显示一个带有 pdf 标题的空白 pdf 页面。我收到一条错误消息,如“无法为路径发出文件扩展名”。
但是,这是我发现的:
直接从捆绑包中生成我的 url 适用于模拟器,但不适用于设备
// This was not working on device, but did work with simulator
let fileURL = Bundle.main.url(forResource: "SomePDF", withExtension: "pdf")!
self.docVC = UIDocumentInteractionController(url: fileURL)
self.docVC.delegate = self
self.docVC.presentPreview(animated: true)
所以只是为了看看会发生什么,我采用了相同的 url,将其转换为数据并使用新的 url 保存到临时目录中。这最终起作用了:
// Now it opens correctly on both simulator and device
let url = Bundle.main.url(forResource: "SomePDF", withExtension: "pdf")!
let pdfData = try! Data(contentsOf: url)
let temp = NSTemporaryDirectory()
let fileURL = URL(fileURLWithPath: temp).appendingPathComponent("SomePDF.pdf")
try! pdfData.write(to: fileURL)
self.docVC = UIDocumentInteractionController(url: fileURL)
self.docVC.delegate = self
self.docVC.presentPreview(animated: true)
希望这可以帮助其他遇到此问题的人。正在使用 iPhone X iOS 11.2.1