我正在开发一个简单的RSS阅读器应用程序,作为Xcode的初学者项目.我目前设置了它来解析提要,放置标题、发布日期、描述和内容,并将其显示在WebView中.

我最近决定在用于 Select 帖子的TableView中显示描述(或内容的截断版本).但是,在执行此操作时:

cell.textLabel?.text = item.title?.uppercaseString
cell.detailTextLabel?.text = item.itemDescription //.itemDescription is a String

它显示了帖子的原始HTML.

我想知道如何将HTML转换为纯文本,仅用于TableView的详细UILabel.

谢谢!

推荐答案

您可以添加此扩展以将html代码转换为常规字符串:

编辑/更新:

讨论不应在后台调用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

Ios相关问答推荐

SwiftUI文本编辑器内部滚动填充,无需文本裁剪

SWIFT中具有可选返回类型和泛型的网络请求

SwiftUI拖动手势和内容拖动时的奇怪行为( skip /卡顿)

如何使视图完全适合屏幕,而不会在旋转时溢出手机屏幕的边界?

如果条件不满足,S从@ViewBuilder返回什么?

Xcode 15阻止我的应用程序运行:由于实时模式录制的高比率,丢失了1条日志(log)/路标消息?

Swift Combine:prepend() before share() 阻止初始接收器执行

SwiftUI - 如何从主题感知命名 colored颜色 中获取正确的 RGB 值?

在我的 M1 上出现 Architecture arm64 问题,因此我无法运行我的旧项目

UIView 倒置旋转时的zoom 问题

我无法使用 Swift 将文件上传到 firebase

iOS按钮和navigationLink在List中相邻

SwiftUI:如何为 ScrollView 制作可拉伸(灵活)的粘性标题?

卡在 Apple 的 SwiftUI 教程第 5 章(更新应用数据)

SwiftUI 选项卡式视图防止滑动到下一个选项卡

在 Swift 中上传带参数的图像

如何缩小 UIImage 并使其同时变得清晰/锐利而不是模糊?

文件是为存档而构建的,它不是被链接的体系 struct (i386)

从故事板导航到其他 Swift 1.2 文件时 Xcode 6.3 崩溃

值/对象的 NSDictionary 键?