我正在开发一个简单的RSS Reader应用程序,作为Xcode中的初学者项目。目前,我已设置它解析提要,并放置标题,发布日期,描述和内容,并将其显示在WebView中。
我最近决定在用于选择帖子的TableView中显示说明(或内容的删节版本)。但是,这样做时:
cell.textLabel?.text = item.title?.uppercaseString cell.detailTextLabel?.text = item.itemDescription //.itemDescription is a String
它显示了帖子的原始HTML。
我想知道如何仅将TableView的详细UILabel转换为纯文本的HTML。
谢谢!
您可以添加此扩展名以将html代码转换为常规字符串:
编辑/更新:
讨论不应从后台线程调用HTML导入器(即,选项字典包含值为html的documentType)。它将尝试与主线程同步,失败并超时。从主线程调用它是可行的(但如果HTML包含对外部资源的引用,仍可能会超时,应该不惜一切代价避免这样做)。HTML导入机制用于实现诸如markdown之类的东西(即,文本样式,颜色等),而不是用于常规HTML导入。
Xcode 11.4•Swift 5.2
extension Data { var html2AttributedString: NSAttributedString? { do { return try NSAttributedString(data: self, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil) } catch { print("error:", error) return nil } } var html2String: String { html2AttributedString?.string ?? "" } }
extension StringProtocol { var html2AttributedString: NSAttributedString? { Data(utf8).html2AttributedString } var html2String: String { html2AttributedString?.string ?? "" } }
cell.detailTextLabel?.text = item.itemDescription.html2String