Как записать NSAttributedstring в rtf file?

Подскажите, как я могу записать NSAttributedstring в rtf file? через macOS or iOS. Я нашел очень старый ответ https://stackoverflow.com/questions/33178895/how-can-i-save-the-attributed-string-text-into-file-swift-cocoa Но я не совсем понял что именно мне следует делать, и может существует более простой способ?


Ответы (1 шт):

Автор решения: VAndrJ

Всё что Вам нужно - получить Data для записи в файл. Для этого у NSAttributedString есть функция:

func rtf(from range: NSRange, documentAttributes dict: [NSAttributedString.DocumentAttributeKey : Any] = [:]) -> Data?

А потом просто её записать по нужному пути:

func saveToRtf(string: NSAttributedString, path: String) -> Bool {
    let rtfData = string.rtf(
        from: NSRange(location: 0, length: string.length),
        documentAttributes: [.documentType: NSAttributedString.DocumentType.rtf]
    )
    return FileManager.default.createFile(
        atPath: path,
        contents: rtfData,
        attributes: nil
    )
}

Результат для:

let string = NSAttributedString(
    string: "Test",
    attributes: [
        NSAttributedString.Key.foregroundColor: NSColor.red,
        NSAttributedString.Key.backgroundColor: NSColor.green
    ]
)

введите сюда описание изображения

→ Ссылка