NEW: Master Swift design patterns with my latest book! >>

How to convert HTML to an NSAttributedString

Written by Paul Hudson    @twostraws

You can create an NSAttributedString directly from HTML, including support for a wide range of formatting, using a special initializer and passing in NSAttributedString.DocumentType.html for your document type.

For example, given the following HTML:

let html = """
<html>
<body>
<h1>Hello, world!</h1>
</body>
</html>
"""

You first need to convert that string into a Data instance, like this:

let data = Data(html.utf8)

You can now create an NSAttributedString from that. This is a throwing call because you might try to convert something that isn’t valid, so we’re going to use try? and wrap it in if let:

if let attributedString = try? NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil) {
    yourLabel.attributedText = attributedString
}

Available from iOS 7.0

Did this solution work for you? Please pass it on!

Other people are reading…

About the Swift Knowledge Base

This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.

Learn Server-Side Swift now!

Take your Swift code to the server and become a full-stack developer with my latest book: Server-Side Swift!

Click here to visit the Hacking with Swift store >>