首页 > 解决方案 > Apple 是如何在其 iOS 图书应用中实现书签功能的?

问题描述

我正在制作一个类似于 iOS 上内置的 Books App 的 PDF 阅读器。我的书签工作并更新,除非我退出 PDF 视图并返回文档浏览(文件选择器),然后再次打开我的 PDF。然后我的应用程序崩溃:

    private func updateBookmarkStatus() {

        if let documentURL = pdfDocument?.documentURL?.absoluteString,
            let bookmarks = UserDefaults.standard.array(forKey: documentURL) as? [Int],
            let currentPage = pdfView.currentPage,
            let index = pdfDocument?.index(for: currentPage) {
      /*crashes on this line*/:  bookmarkButton.image = bookmarks.contains(index) ? #imageLiteral(resourceName: "Bookmark-P") : #imageLiteral(resourceName: "Bookmark-N")
        } else {
            print("Bookmark Error")
        }
    }

Unexpectedly found nil while implicitly unwrapping an Optional value:

我发表评论的那一行只是将书签更新为“填充版本”,向用户显示该页面已添加书签。

书签更新并在 PDF 中工作。一旦我退出 PDF,浏览文档,然后返回 PDF,它就会崩溃。可能值得注意的是,当我第一次打开 PDF 时,会打印“书签错误”。

如果我不触摸书签按钮,那么我可以转到文档浏览并重新打开 PDF 任意多次。但是一旦我触摸书签按钮,我就无法再次打开我的 PDF 文件。

有什么建议么?

提前致谢。

标签: iosswiftxcodepdfpdfkit

解决方案


推荐阅读