2017-11-06 38 views
0

私たちのアプリではPDFKitを使用することを誇りに思っていますが、いくつかのドキュメントでクラッシュが発生し、Links Handlingに関連しています。 https://www.tinaja.com/glib/pdflink.pdfPDFKit annotation nullクラッシュする可能性のあるヌル属性になる可能性があります

問題は、我々は、PDFでの注釈のリンクのURLを取得することで、オブジェクトPDFActionUrlが非NULL可能であるurl: URL性質を持っている:

私たちは奇妙なクラッシュをprovoque 1つのPDF文書を発見しました。

しかし、事実は、それがヌルであって、それが起きたときにクラッシュを引き起こすことを示しています!遊び場での概念の

証明:

import PDFKit 

guard let pdfUrl = Bundle.main.url(forResource: "pdflink", withExtension: "pdf") else { 
    fatalError("no pdf url") 
} 

guard let pdf = PDFDocument(url: pdfUrl) else { 
    fatalError("no pdf document") 
} 

guard let firstPage = pdf.page(at: 0) else { 
    fatalError("no page") 
} 

firstPage.annotations[0].action // URL Action - (null) 
firstPage.annotations[1].action // URL Action - (null) 

guard let action = firstPage.annotations[0].action as? PDFActionURL else { 
    fatalError("no action") 
} 

// PDFActionURL.url is non-nullable URL type 
action.url // error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0). 

、誰もが、我々は値をチェックし、クラッシュを防ぐことができます方法を知っていますか?あなたの情報については

答えて

0

、私はアップルにバグレポートを開いている、と醜い、回避策を見つけましたが、今のために働い:

if let urlAction = annotation.action as? PDFActionURL { 
    if urlAction.description.contains("URL Action - (null)") { 
    throw Errors.unsupportedPdfAction 
    } 
    type = .url(url: urlAction.url) 
} 
関連する問題