swift3 - 如何在 Swift 3 中使用 HTML 标签切换字符串以清除字符串

标签 swift3 ios10

我有旧代码:

   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”而终止应用程序,原因:“-[_SwiftValue unsignedIntegerValue]:无法识别的选择器发送到实例 0x608000251d30” 我不知道出了什么问题。有人可以帮助我吗?

最佳答案

String.Encoding 是一个 Swift 结构体,无法传递到 Objective-C 世界。当 Swift 在 Any 中找到此类内容时,它会生成 _SwiftValue,这在 Objective-C 中完全无用。

试试这个:

return try NSAttributedString(data: encodedData, options: [
    NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,
    NSCharacterEncodingDocumentAttribute:String.Encoding.utf8.rawValue
], documentAttributes: nil).string

关于swift3 - 如何在 Swift 3 中使用 HTML 标签切换字符串以清除字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40008164/

相关文章:

ios - 在字典中快速搜索键

ios - 调试 URLSession(在 iOS 10 中)

ios - 在 iOS 10 中使用 UIActivityViewController 在应用程序之间共享多个文件

ios - 如何在 Collection View 中添加 indexTitles? (iOS 10+)

ios - 选择要在 didEndDisplaying 中使用的单元格类

ios - 如何使用 swift 3.1 将图像从 url 加载到字典中作为数据

swift3 - 文件私有(private)和私有(private)扩展之间的区别?

ios - 执行 segue 并作为发件人发送元组

swift - 如何检查 Firebase 中 autoID 子项下保存的值?

ios - iOS10 中 isKindOfClass 面临的问题