gpt4 book ai didi

ios - PDFKit 注释 url 因不可为 null 的属性(可以为 null)而崩溃

转载 作者:行者123 更新时间:2023-11-30 12:01:41 24 4
gpt4 key购买 nike

我们很自豪在我们的应用程序中使用 PDFKit,但对于某些文档,出现了崩溃,并且与链接处理有关。

我们发现一个 PDF 文档引发了奇怪的崩溃:https://www.tinaja.com/glib/pdflink.pdf

问题是我们获取 pdf 中注释链接的 URL,并且对象 PDFActionUrl 有一个不可为 null 的 url: URL 属性。

但事实表明它可以为空,并且当它为空时会引发崩溃!

Playground 中的概念证明:

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).

有谁知道我们如何检查该值并防止崩溃?

最佳答案

供您引用,我在 Apple 上打开了一份错误报告,并找到了一个解决方法,虽然丑陋,但目前可以使用:

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

关于ios - PDFKit 注释 url 因不可为 null 的属性(可以为 null)而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47138896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com