Swift PDFDocument возвращает ноль для файлов и URL - PullRequest
0 голосов
/ 10 января 2019

Я хочу показать файл PDF с помощью PDFView в приложении для iOS. Я добавил файл с именем merlin.pdf в каталог моего проекта. Я также проверил, что merlin.pdf включен в Ресурсы Copy Bundle в фазах сборки. Но все же, PDFDocument возвращает ноль. Это код, который я использую:

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.

Затем я попробовал онлайн ссылку на файл 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.
    }
}

Что мне делать?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Как ни странно, проблема была в ключевом слове weak в @IBOutlet weak var pdfView: PDFView!. Удаление weak заставило код работать. Спасибо @klinki за упоминание о выходе.

0 голосов
/ 10 января 2019

Может быть, вы пропустили установку класса представления в конструкторе интерфейсов для вашего выхода pdfView? enter image description here

Потому что ваш код в порядке и работает для меня.

...