Swift3 如何在Swift 3中将带有HTML标记的字符串切换为清除字符串
我有旧代码:Swift3 如何在Swift 3中将带有HTML标记的字符串切换为清除字符串,swift3,ios10,Swift3,Ios10,我有旧代码: func htmlToText(encodedString:String) -> String? { let encodedData = encodedString.dataUsingEncoding(NSUTF8StringEncoding)! do { return try NSAttributedString(data: encodedData, options: [NSDocumentTypeDocumentAttribu
func htmlToText(encodedString:String) -> String?
{
let encodedData = encodedString.dataUsingEncoding(NSUTF8StringEncoding)!
do
{
return try NSAttributedString(data: encodedData, options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,NSCharacterEncodingDocumentAttribute:NSUTF8StringEncoding], documentAttributes: nil).string
} catch let error as NSError {
print(error.localizedDescription)
return nil
}
}
我想把它翻译成swift 3,现在我有:
let encodedData = encodedString.data(using: String.Encoding.utf8)!
do
{
return try NSAttributedString(data: encodedData, options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,NSCharacterEncodingDocumentAttribute:String.Encoding.utf8], documentAttributes: nil).string
} catch let error as NSError {
print(error.localizedDescription)
return nil
}
此代码生成错误:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[\u SwiftValue unsignedIntegerValue]:未识别的选择器已发送到实例0x60800251d30”
我不知道会出什么问题。有人能帮我吗?
字符串。编码是一种快速结构,不能传递给Objective-C world。当Swift在Any
中找到这些东西时,它会生成\u SwiftValue
,这在Objective-C中是完全无用的
试试这个:
return try NSAttributedString(data: encodedData, options: [
NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute:String.Encoding.utf8.rawValue
], documentAttributes: nil).string