Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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图书应用程序上实现书签功能的?_Ios_Swift_Xcode_Pdf_Pdfkit - Fatal编程技术网

苹果是如何在其iOS图书应用程序上实现书签功能的?

苹果是如何在其iOS图书应用程序上实现书签功能的?,ios,swift,xcode,pdf,pdfkit,Ios,Swift,Xcode,Pdf,Pdfkit,我正在制作一个类似于iOS内置的Books应用程序的PDF阅读器。我的书签工作并更新,除非我退出PDF视图并返回文档浏览(文件选择器),然后再次打开我的PDF。然后我的应用程序崩溃: private func updateBookmarkStatus() { if let documentURL = pdfDocument?.documentURL?.absoluteString, let bookmarks = UserDefaults.sta

我正在制作一个类似于iOS内置的Books应用程序的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")
        }
    }

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


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

如果我不按书签按钮,那么我可以进入文档浏览,并根据需要多次重新打开PDF。但只要我按下书签按钮,我就无法再次打开我的PDF文件

有什么建议吗


提前感谢。

如果让我看,可以尝试将
书签.包含(索引)
放入
行?@koen我也有同样的错误。我在if let中的最后一个语句后加了逗号。。。我把bookmarks.contains(index)放进去了。那么你写的是
。。。如果let contains=bookmarks.contains(index){bookmarkButton.image=contains?#imageLiteral(resourceName:“Bookmark-P”):#imageLiteral(resourceName:“Bookmark-N”)
?您确定Bookmark-P和Bookmark-N不是零吗?“值得注意的是,当我第一次打开PDF时,“Bookmark Error”会被打印出来。”你预料到了吗?@koen它们不是零。还有,我怎么能这样写呢?我不能在那个序列中插入另一个“if”语句。
Unexpectedly found nil while implicitly unwrapping an Optional value: