Получение необработанной строки Markdown из AttributedString в Swift

Есть ли способ получить строку Markdown из файла ? У меня есть следующий код:

      let text = "**Hello** World!"
let attString = AttributedString(text)

Теперь я хочу вернуть строку Markdown. я это виделAttributedStringвключает вызов описания, который пытается решить проблему, но к результату добавляется набор скобок:

      print(attString.description)

Результат:

      **Hello** World! {
}

Я подумал, что может быть лучший способ сделать это.

2 ответа

Markdown — это удобный способ создания AttributedString. Это не внутренний формат AttributedString. Большинство вещей, которые может представлять AttributedString, невозможно представить даже в Markdown. В самом простом примере AttributedString может определить точный шрифт для региона. В Markdown невозможно выразить это. В крайнем случае, AttributedString может представлять любые атрибуты, включая пользовательские, определенные в вашем коде, а не только те, которые определены Foundation.

Но в вашем случае, я считаю, путаница более серьезная. Рассматриваемый «Markdown» — это просто строка. Если вы этого хотите, то это можно сделать с помощью:

      String(attString.characters)

(Как ни удивительно, нет.stringсвойство. Это потому, что построить его дороже, чем кажется.)

То, что вы здесь создали, не является AttributedString, определенным Markdown. Для этого потребуется позвонитьtry AttributedString(markdown: text). Это просто строка, в которой есть звездочки. Если вы действительно создали отформатированную AttributedString с помощью Markdown и вам необходимо вернуть Markdown, вам нужно будет отслеживать это самостоятельно в типе оболочки, который содержит AttributedString и строку Markdown.

Как предложил @paulo-mattos, вот решение:

      let text = "**Hello** World!"
let attString = AttributedString(text)
let data = try JSONEncoder().encode(attString)
if let stringValue = String( data: data, encoding:.utf8 ){
    print( stringValue)
}
Другие вопросы по тегам