Это старый ответ, который я опубликовал несколько лет назад. Мое намерение было
не для того, чтобы обеспечить «хорошее» и «респектабельное» решение, а для «хакерского»
это может быть полезно при некоторых обстоятельствах. Пожалуйста, не используйте это решение, если больше ничего не работает.
На самом деле, он отлично работает во многих ситуациях, когда другие
ответы не, потому что UIWebView делает всю работу. И вы можете
даже внедрить некоторый JavaScript (который может быть опасным и / или полезным). Производительность должна быть ужасной, но на самом деле все не так плохо.
Есть еще одно решение, которое следует упомянуть. Просто создайте UIWebView
, загрузите закодированную строку и получите текст обратно. Он экранирует теги «<>», а также декодирует все html-сущности (например, «& gt;») и может работать там, где другие этого не делают (например, используя кириллицу). Я не думаю, что это лучшее решение, но оно может быть полезно, если вышеуказанные решения не работают.
Вот небольшой пример использования ARC:
@interface YourClass() <UIWebViewDelegate>
@property UIWebView *webView;
@end
@implementation YourClass
- (void)someMethodWhereYouGetTheHtmlString:(NSString *)htmlString {
self.webView = [[UIWebView alloc] init];
NSString *htmlString = [NSString stringWithFormat:@"<html><body>%@</body></html>", self.description];
[self.webView loadHTMLString:htmlString baseURL:nil];
self.webView.delegate = self;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
self.webView = nil;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
self.webView = nil;
NSString *escapedString = [self.webView stringByEvaluatingJavaScriptFromString:@"document.body.textContent;"];
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
// Do Nothing
}
@end