Swift:PDFDocument写

时间:2018-01-04 11:42:21

标签: swift quartz-graphics

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

1 个答案:

答案 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!")
    //...
}

此代码编译没有问题。