Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何阻止书签破坏PDF应用程序?_Ios_Swift_Xcode_Pdf_Pdfkit - Fatal编程技术网

Ios 如何阻止书签破坏PDF应用程序?

Ios 如何阻止书签破坏PDF应用程序?,ios,swift,xcode,pdf,pdfkit,Ios,Swift,Xcode,Pdf,Pdfkit,我有一个PDF阅读器应用程序,使用PDFKit和iOS 13 Swift,它有一个书签按钮,可以为特定页面添加书签。当我还在看我的PDF时,它对我来说很好,但是如果我在我的PDF中添加至少一页书签,然后返回到我的文件浏览器,再次选择我的PDF,应用程序就会崩溃。 这是我的密码: private func updateBookmarkStatus() { if let documentURL = pdfDocument?.documentURL?.absoluteString,

我有一个PDF阅读器应用程序,使用PDFKit和iOS 13 Swift,它有一个书签按钮,可以为特定页面添加书签。当我还在看我的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) {
            bookmarkButton.image = bookmarks.contains(index) ? #imageLiteral(resourceName: "Bookmark-P") : #imageLiteral(resourceName: "Bookmark-N")
        }
    }
而且它与

Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
此更新函数在加载PDF的每个单独页面时调用。然而,当我退出并再次输入我的PDF时,它在这里崩溃了,因为我认为Swift找不到书签数组,因为至少有一个书签被标记了。只有当我标记了至少一个书签,然后退出到我的文件浏览器,然后再次打开我的PDF时,我的应用程序才会崩溃


非常感谢您的帮助。

try:let currentPage=pdfView?.currentPage,@MohitKumar我应该把它放在哪里?在您的if语句中…第三个let语句现在可以用了吗?@MohitKumar不,我不能把try语句放在那里。“let”声明的整个序列都在“if”下。。。