Как динамически настроить канал для уведомлений Jenkins Slack

Elegant Swift 4 Solution

Если вы хотите, чтобы строка

myString = String(htmlString: encodedString)

Добавьте это расширение в свой проект

extension String {

    init(htmlString: String) {
        self.init()
        guard let encodedData = htmlString.data(using: .utf8) else {
            self = htmlString
            return
        }

        let attributedOptions: [NSAttributedString.DocumentReadingOptionKey : Any] = [
           .documentType: NSAttributedString.DocumentType.html,
           .characterEncoding: String.Encoding.utf8.rawValue
        ]

        do {
            let attributedString = try NSAttributedString(data: encodedData,
                                                          options: attributedOptions,
                                                          documentAttributes: nil)
            self = attributedString.string
        } catch {
            print("Error: \(error.localizedDescription)")
            self = htmlString
        }
    }
}

Если вы хотите, чтобы NSAttributedString с жирным шрифтом, курсивом, ссылками и т. д.:

textField.attributedText = try? NSAttributedString(htmlString: encodedString)

Добавьте это расширение в свой проект

extension NSAttributedString {

    convenience init(htmlString html: String) throws {
        try self.init(data: Data(html.utf8), options: [
            .documentType: NSAttributedString.DocumentType.html,
            .characterEncoding: String.Encoding.utf8.rawValue
            ], documentAttributes: nil)
    }

}
0
задан Tomer Salakoff 30 December 2018 в 16:56
поделиться