Swift似乎再次发生了变化,而且我在编写代码时遇到了麻烦:
let pdf_url = URL(fileURLWithPath: filename)
let pdf_doc = PDFDocument.init(url: pdf_url)
let value = "Bibbly"
let diction = [kCGPDFContextCreator : value ] as Any
pdf_doc!.write(toFile: filename, withOptions: (diction as [PDFDocumentWriteOption : Any]))
我收到以下错误:' CFString'不可转换为'任何'
任何人都知道问题是什么? API参考在这里:
https://developer.apple.com/documentation/pdfkit/pdfdocument/1436053-write
答案 0 :(得分:1)
与API参考中一样,withOptions
参数的类型为[PDFDocumentWriteOption : Any]
,因此将diction
声明为Any
不是一个好主意。
let diction: [PDFDocumentWriteOption : Any] = [kCGPDFContextCreator : value]
有了这行代码,Xcode给了我一个建议:
'CFString'不能隐式转换为'PDFDocumentWriteOption'; 你的意思是使用'as'来明确转换吗?
所以,我接受了以下建议修复 -ed它:
let pdf_url = URL(fileURLWithPath: filename)
if let pdf_doc = PDFDocument(url: pdf_url) {
let value = "Bibbly"
let diction: [PDFDocumentWriteOption : Any] = [kCGPDFContextCreator as PDFDocumentWriteOption : value]
pdf_doc.write(toFile: filename, withOptions: diction)
} else {
print("PDF document at: \(filename) cannot be opened!")
//...
}
此代码编译没有问题。