gpt4 book ai didi

ios - Swift 字典不想从 C 回调函数填充

转载 作者:行者123 更新时间:2023-11-30 12:44:52 26 4
gpt4 key购买 nike

我正在用 Swift 编写一个 PDF 解析器,并且已经达到了使用回调函数 (CGPDFDictionaryApplyFunction) 获取所有字体数据的程度,getFont 函数应该填充 PDFFontCollection 类中的字体字典。在“getFont”回调函数中,集合变量已正确填充 - 但是当回调完成时,字体字典仍然有 0 个条目。

class PDFFontCollection{
var fonts: [AnyHashable:Any]!

init(page: CGPDFPage){
fonts = [AnyHashable:Any]()

let fontsdict = self.findFontDictionary(page: page)

if(fontsdict != nil){
CGPDFDictionaryApplyFunction(fontsdict!, self.getFont , &self.fonts)
}
}




private var getFont: CGPDFDictionaryApplierFunction = { (key, object, info) in
var collection = info?.assumingMemoryBound(to: [AnyHashable: Any].self).pointee

var name = String(cString: key, encoding: String.Encoding.ascii)

var dict: CGPDFDictionaryRef?
if (CGPDFObjectGetValue(object, .dictionary, &dict)){
var font = PDFFont.pdfFont(withFontDictionary: dict!)
collection?.updateValue(font!, forKey: name!)
}


}

最佳答案

对于任何感兴趣的人来说,PeejWeej 是对的。您需要将 fonts 声明为 NSMutableDictionary 以便能够填充它,因为 [AnyHashable:Any] 始终通过引用传递。

关于ios - Swift 字典不想从 C 回调函数填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41772302/

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