将HTML字符串转换为纯字符串Objective-C

时间:2015-10-27 09:23:59

标签: html ios objective-c plaintext

我制作了UITableView,其中每个单元格都包含UILabel。输入是一些HTML字符串(如网站页面源),例如来自Example Domain

<body>
<div>
    <h1>Example Domain</h1>
    <p>This domain is established to be used for illustrative examples in documents. You may use this
    domain in examples without prior coordination or asking for permission.</p>
    <p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>

但更大,超过4000个字符。

我想将这些HTML字符串转换为纯字符串,对于上面的示例,它将是:

  

示例域

     

该域名被建立用于文档中的说明性示例。您可以在不事先的示例中使用此域   协调或征求许可。

     

更多信息......

然后在UILabel中显示它们。目前我正在使用这种方式:

NSData *htmlData = [htmlString dataUsingEncoding:NSUnicodeStringEncoding];
NSAttributedString *attrString = [[NSAttributedString alloc]
          initWithData:HTMLData
               options:@{
                   NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType
               }
    documentAttributes:nil
                 error:nil];
NSString *plainString = attrString.string;

这样可以正常工作,但性能非常糟糕,滚动浏览tableView时会导致闪烁。有没有更有效的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

使用以下代码:

NSString * htmlString = ...;
NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];

UILabel * myLabel = [UILabel alloc] init];
myLabel.attributedText = attrStr;