Как конвертировать HTML в строку - PullRequest
0 голосов
/ 31 марта 2019

Чтобы преобразовать HTML в строку, я использую это расширение :

extension Data {
    var html2AttributedString: NSAttributedString? {
        do {
            return try NSAttributedString(data: self, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)
        } catch {
            print("error:", error)
            return  nil
        }
    }
    var html2String: String {
        return html2AttributedString?.string ?? ""
    }
}

extension String {
    var html2AttributedString: NSAttributedString? {
        return Data(utf8).html2AttributedString
    }
    var html2String: String {
        return html2AttributedString?.string ?? ""
    }
}

Но текст, который я получаю в API, я должен конвертировать с NSAttributedString.DocumentType.html, а иногда с NSAttributedString.DocumentType.plain

Как я могу объединить эти два параметра?

1 Ответ

0 голосов
/ 01 апреля 2019

Эти расширения выполняют (1) создание объекта Data из строки HTML, (2) преобразование объекта Data в объект NSAtrributedString. Другими словами, это выглядит следующим образом.

import UIKit

class ViewController: UIViewController {
    // MARK: - Variables

    // MARK: - IBOutlet
    @IBOutlet weak var label: UILabel!

    // MARK: - IBAction
    override func viewDidLoad() {
        super.viewDidLoad()

        let htmlStr = makeHTMLString()
        let data = Data(htmlStr.utf8)
        if let attributedString = try?NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil) {
            //print(attributedString.string)
            label.attributedText = attributedString
        }
    }

    func makeHTMLString() -> String {
        return "<html>\n<head></head>\n<body>\n<h1>Hello, world!</h1>\n</body>\n</html>"
    }
}

В конце концов, вам не нужны эти расширения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...