苹果是如何在其iOS图书应用程序上实现书签功能的?
我正在制作一个类似于iOS内置的Books应用程序的PDF阅读器。我的书签工作并更新,除非我退出PDF视图并返回文档浏览(文件选择器),然后再次打开我的PDF。然后我的应用程序崩溃:苹果是如何在其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
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: