将属性字符串保存到RTF文件不再保存属性

时间:2019-06-24 15:19:26

标签: swift swift4

在与假期相关的噩梦中,我使用版本控制功能无法确定以下内容为何不再起作用。

我正在尝试将属性文本保存到.rtf文件,然后再读取。

这是可行的,但由于经过几个小时的逐行检查后,由于某些原因我无法理解。

我正在尝试将textview的内容保存到具有以下属性的.rtf文件中:

func saveExistingScene() {


    let textView = textViewOutlet
    let fileURL = getFileURL() //shared function to get the URL of an existing RTF file: there’s a different one for “setFileURL” when saving a new scene

    textView?.attributedText = NSAttributedString(string: (textView?.text)!, attributes: nil)
    if let attributedText = textView?.attributedText {
        let documentAttributes: [NSAttributedString.DocumentAttributeKey: Any] = [.documentType: NSAttributedString.DocumentType.rtf]
        do {
            let rtfData = try attributedText.data(from: NSRange(location: 0, length: attributedText.length), documentAttributes: documentAttributes)
            let rtfString = String(data: rtfData, encoding: .utf8) ?? ""
            try rtfString.write(to: fileURL, atomically: true, encoding: .utf8)
            print("Saved an update")
        } catch {
            print("failed to save an update with error: \(error)")
        }
    }

当用户按此处的CMD + B或CMD + I键时,用户可以将文本更改为粗体和斜体(不必将所有内容都放在不需要的地方)

let makeBold: [String : Any] = [
        NSAttributedStringKey.font.rawValue:  UIFont(name: "AvenirNext-Bold", size: 15.0)!, NSAttributedStringKey.foregroundColor.rawValue: UIColor.white
    ]

通过键盘命令启用。效果很好,并且可以正确反映在UITextView中。

在viewDidLoad中将textview中文本的通用颜色设置为白色。
textViewOutlet.UIColour = white

该文件可以保存并创建一个.rtf文件,但所有属性都已被删除,并以Helvetica字体(黑色,没有粗体或斜体)保留。

这太令人沮丧了,因为它在放假前的几天里工作了!帮助赞赏!

更新:我在'if let'下面添加了一条打印语句,它以RTF格式打印出来,但是默认为Helvetica大小12,而不是textview中实际的属性(白色,Avenir,粗体/斜体/普通等)。这对任何人都有帮助吗??

0 个答案:

没有答案