Ios CGPDFDictionaryGetString函数无参数异常
我发现无法在pdf中获取内容类型。我在试图从字典中读取内容类型的地方构建了代码。我发现type的键是type。但是,我得到一个错误: 致命错误:在展开可选值时意外发现nil 这是我的密码:Ios CGPDFDictionaryGetString函数无参数异常,ios,objective-c,swift,file,pdf,Ios,Objective C,Swift,File,Pdf,我发现无法在pdf中获取内容类型。我在试图从字典中读取内容类型的地方构建了代码。我发现type的键是type。但是,我得到一个错误: 致命错误:在展开可选值时意外发现nil 这是我的密码: pdfDoc = CGPDFDocumentCreateWithURL(url) if (pdfDoc != nil) { let pdfCatalog=CGPDFDocumentGetCatalog(pdfDoc) var uriStringRef: UnsafeMutablePointe
pdfDoc = CGPDFDocumentCreateWithURL(url)
if (pdfDoc != nil) {
let pdfCatalog=CGPDFDocumentGetCatalog(pdfDoc)
var uriStringRef: UnsafeMutablePointer< CGPDFStringRef>!
if (CGPDFDictionaryGetString(pdfCatalog, "Type", uriStringRef)) { //error
print(uriStringRef)
}
}
pdfDoc=CGPDFDocumentCreateWithURL(url)
如果(pdfDoc!=零){
让pdfCatalog=CGPDFDocumentGetCatalog(pdfDoc)
var uriStringRef:unsafemeutablepointer!
if(CGPDFDictionaryGetString(pdfCatalog,“Type”,uriStringRef)){//error
打印(uriStringRef)
}
}
唯一的nil参数是uriStringRef
。但是,在传递到CGPDFDictionaryGetString
之前,我不应该设置任何值,根据,这应该得到基于键“Type”
的字符串返回值。我说得对吗
如何解决此问题?您正在向
CGPDFDictionaryGetString
方法传递一个未初始化的指针,这是不安全的,因为您无法知道正在调用的方法在写入指针之前是否尝试从指针读取
来自Swift博客:
指针作为输入/输出参数
C和Objective-C不支持多个返回值,因此CocoaAPI经常使用指针作为在函数中传递额外数据的方式。Swift允许将指针参数视为inout参数,因此可以使用相同的&
语法将对var
的引用作为指针参数传递
为了安全起见,Swift要求在使用和传递变量之前对变量进行初始化。这是因为它无法知道被调用的方法在写入指针之前是否尝试读取指针
因此,初始化CGPDFStringRef
“指针”,如下所示:
var uriStringRef = CGPDFStringRef.init()
并使用inout语法将其传递给方法:
CGPDFDictionaryGetString(pdfCatalog, "Type", &uriStringRef)