Cannot convert value of type 'NSAttributedString.DocumentAttributeKey' to expected dictionary key type 'NSAttributedString.DocumentReadingOptionKey'
Swift 3切换为Swift 4,原来用于转换html为NSAttributedString的代码报错:
Cannot convert value of type 'NSAttributedString.DocumentAttributeKey' to expected dictionary key type 'NSAttributedString.DocumentReadingOptionKey'
Swift 3代码:
func html2AttributedString() -> NSAttributedString {
    return try! NSAttributedString(
       data: self.data(using: String.Encoding.unicode, allowLossyConversion: true)!, 
       options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], 
       documentAttributes: nil)
}
在Swift 4转换为NSAttributedString需要使用DocumentType选项:
- doc:NSAttributedString.DocumentType.docFormat
- html:NSAttributedString.DocumentType.html
- plain文本:NSAttributedString.DocumentType.plain
- 富文本:NSAttributedString.DocumentType.rtf
- 带有附件的富文本:NSAttributedString.DocumentType.rtfd
所以Swift4对应的代码为:
func html2AttributedString() -> NSAttributedString {
 return try! NSAttributedString(
    data: modifiedFont.data(using: .unicode, allowLossyConversion: true)!,
    options:[.documentType: NSAttributedString.DocumentType.html,
    .characterEncoding: String.Encoding.utf8.rawValue],
    documentAttributes: nil)
}
需要加上
.characterEncoding: String.Encoding.utf8.rawValue
否则可能会导致app崩溃。
 
             
             
             
             
            