There is actually a built-in solution for this ... In NSAttributedString. Below is the category for NSString, which simplifies:
@interface NSString (HTMLString)
- (NSString *)HTMLString;
@end
@implementation NSString (HTMLString)
- (NSString *)HTMLString {
NSDictionary * const exportParams = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};
NSAttributedString *attributed = [[NSAttributedString alloc] initWithString:self];
NSData *htmlData = [attributed dataFromRange:NSMakeRange(0, attributed.length) documentAttributes:exportParams error:nil];
return [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding];
}
@end
source
share