Swift PDFDocument return 文件和 url 为零

Swift PDFDocument return nil for files and urls

我想在 iOS 应用程序中使用 PDFView 显示 PDF 文件。我在我的项目目录中添加了一个名为 merlin.pdf 的文件。我还检查了 merlin.pdf 是否包含在构建阶段的复制包资源中。但是,PDFDocument returns 仍然是零。这是我正在使用的代码:

import UIKit
import PDFKit

class ReaderViewController: UIViewController {

    // MARK: - Properties
    @IBOutlet weak var pdfView: PDFView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let url = Bundle.main.url(forResource: "merlin", withExtension: "pdf")
        let pdfDocument = PDFDocument(url: url!)

        pdfView.document = pdfDocument
        pdfView.displayMode = PDFDisplayMode.singlePageContinuous
        pdfView.autoScales = true


        // Do any additional setup after loading the view.
    }
}

pdfView.document = pdfDocument 抛出致命错误。

然后,我尝试了一个在线 link 到 PDF 文件。调试时,我可以看到 let pdfDocument = PDFDocument(url: url!) 正在从互联网上下载文件。但是,它又像上次一样失败了。这是代码:

import UIKit
import PDFKit

class ReaderViewController: UIViewController {

    // MARK: - Properties
    @IBOutlet weak var pdfView: PDFView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let url = URL(string: "https://arxiv.org/pdf/1803.10760.pdf")
        let pdfDocument = PDFDocument(url: url!)

        pdfView.document = pdfDocument
        pdfView.displayMode = PDFDisplayMode.singlePageContinuous
        pdfView.autoScales = true


        // Do any additional setup after loading the view.
    }
}

我该怎么办?

也许您错过了在界面生成器中为您的 pdfView 插座设置视图的 class?

因为你的代码很好,适合我。

奇怪的是,问题出在 @IBOutlet weak var pdfView: PDFView! 中的 weak 关键字。删除 weak 使代码工作。 感谢@klinki 提及 outlet。