首页 > 解决方案 > 如何使用 HTML 标签快速显示表格

问题描述

我从包含 html 标签的 API 获取文本。如何在 UILabel 中显示它?我尝试使用 NSAttributedString,但不是我需要的。

下面是我的回复

<div id="Details" class="a-section a-spacing-extra-large">
<div id="feature_div" class="feature" data-feature-name="Description" data-cel-widget="feature_div">
<div id="feature_div" class="a-row feature" data-feature-name="productDescription" data-template-name="productDescription" data-cel-widget="productDescription_feature_div">
<div id="productDescription" class="a-section a-spacing-small">
<p>Manual caulking guns have a thrust ratio; the higher the thrust ratio, the easier it is to dispense the caulk, sealant, or adhesive.</p>
<div></div>
</div>
</div>
</div>
</div>
<div id="p13n-m-desktop-dp-sims_session-similarities-sims-feature-4" class="celwidget" data-cel-widget="desktop-dp-sims_session-similarities-sims-feature-4">
<div class="a-section similarities-widget sims-carousel-holder" data-similarity-type="desktop-dp-sims_session-similarities"></div>
</div>)
"Hi"
Optional(<ul class="a-unordered-list a-vertical a-spacing-none">
<li><span class="a-list-item">dispesing rebaring</span></li>
<li><span class="a-list-item">Easy to handle</span></li>
<li><span class="a-list-item">frame caulking gun</span></li>
<li><span class="a-list-item">requires less force </span></li>
<li><span class="a-list-item">to help prevent dripping</span></li>
</ul>
<div>
<table id="product-specification-table" class="a-keyvalue">
<tbody>
<tr><th class="a-span4 a-text-right">Brand Name</th>
<td>ICFS359</td>
</tr>
<tr><th class="a-span4 a-text-right">Colour</th>
<td>Red</td>
</tr>
<tr><th class="a-span4 a-text-right">Included Components</th>
<td>IDispenser Caulking Gun</td>
</tr>
<tr><th class="a-span4 a-text-right">Material Type</th>
<td>Steel</td>
</tr>
<tr><th class="a-span4 a-text-right">Number of Items</th>
<td>1</td>
</tr>
<tr><th class="a-span4 a-text-right">Number</th>
<td>ICFSDM</td>
</tr>
<tr><th class="a-span4 a-text-right">Size</th>
<td>Standard</td>
</tr>
</tbody>
</table>
</div>)

我试过这个

extension String {
    var htmlToAttributedString: NSAttributedString? {
        guard let data = data(using: .utf8) else { return NSAttributedString() }
        do {
            return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding:String.Encoding.utf8.rawValue], documentAttributes: nil)
        } catch {
            return NSAttributedString()
        }
    }
    var htmlToString: String {
        return htmlToAttributedString?.string ?? ""
    }
}

但我想以以下格式显示我的回复,

品牌名称 ICFS359

容量 10

请帮忙

标签: iosswift

解决方案


通过您提供的上述扩展,您可以使用 UILabel 假设您有一个包含响应 html 值的字符串,如下所示:

let htmlString = "<div id="Details">".htmlToAttributedString
label.attributedText = htmlString

或者因为我在该响应中看到了一个可选的,而不是强制展开它或强制转换为字符串:

if let htmlString = response["value"]  {
    label.attributedText = htmlString.htmlToAttributedString
}

这就是它的样子: https ://ibb.co/zFQLqmp 如果这就是你要找的东西


推荐阅读