2

我有一个带有集合视图的应用程序,它显示 pdf 文档的缩略图。当用户点击缩略图时,会显示一个新的 UIViewController 以及 PDFDocument。我正在尝试缓存 PDFDocument,以便应用程序不必每次都从服务器下载 PDFDocument。我没有成功。我正在使用 PDFKit 来呈现 PDFDocument。下面是我的代码:

当用户点击集合视图中的缩略图时,以下 UIViewController 被压入堆栈并显示 PDFDocument:

 @IBOutlet weak var myPDFView: PDFView!
 let pdfCache = NSCache<NSString, PDFDocument>.init()

 func loadPDF(pdfURL: String) -> Void {

       // FIND IF PDF DOCUMENT IS ALREADY IN CACHE ON KEY 'pdfURL'
    if let documentToCache = self.pdfCache.object(forKey: pdfURL as NSString){
        self.myPDFView.document = (documentToCache as! PDFDocument)
        self.myPDFView.displayMode = .singlePage
        self.myPDFView.autoScales = true
        print("PDF FROM CACHE!")
        return
    }


 .....

    // Not found in cache.  Download pdfDocument
    Alamofire.request(pdfURL).responseData { response in

       if let data = response.data{

            DispatchQueue.main.async{

                let document = PDFDocument.init(data: data)

                // STORE PDF DOCUMENT TO CACHE
                self.pdfCache.setObject(document!, forKey: pdfURL as NSString)

                // DISPLAY PDF
                self.myPDFView.document = document
                self.myPDFView.displayMode = .singlePage
                self.myPDFView.autoScales = true
                print("PDF DOWNLOADED: \(pdfURL)")

            }
        }

    }

 }
4

0 回答 0