在与假期相关的噩梦中,我使用版本控制功能无法确定以下内容为何不再起作用。
我正在尝试将属性文本保存到.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,粗体/斜体/普通等)。这对任何人都有帮助吗??