Swift 3 NSCharacterEncodingDocumentAttribute 的一处坑
项目中有一个方法的作用是把 HTML 字符串解析成 AttributedString,升级到 Swift 3 后,下面这段代码会 crash。
var attributedString: NSAttributedString
do {
try attributedString = NSAttributedString(
data: htmlString.data(using: String.Encoding.utf8)!,
options: [
NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: String.Encoding.utf8 ],
documentAttributes: nil)
} catch _ {
attributedString = NSAttributedString()
}
问题出在 options
中的 NSCharacterEncodingDocumentAttribute
属性,crash 的原因是 String.Encoding.utf8
无法直接转换成 Int
,需要把这一行改成:
NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue