是否有简单的方法将字符串附加到NSScrollView的NSTextView?我不想要属性。我只是以NSString的形式出现错误消息,我希望将每个消息附加到窗口。没有什么花哨。如果我有太多的啤酒并且决定超越顶级花哨,那么CR,LF以及TAB之外没有格式化。
我通过类文档跟踪的每条路径似乎都会导致自我引用的黑洞......就像NSMutableAttributedStrings ...它们不是真正的NSStrings,甚至没有cString方法。
我一直在考虑保留自己的NSString,并在以简单的方式附加errorstring之后完成重写滚动视图的内容。但这似乎......效率低......当报告数量变得非常大时。
答案 0 :(得分:1)
每个字符串都需要将一些属性绘制到屏幕上 - 字体/大小/颜色至少是强制性的。
从文档来看并不完全明显,但操纵NSTextView
的“正确”方法是直接操纵NSTextStorage
。此外,NSTextStorage
是NSMutableAttributedString
的子类。
您可以在不处理属性的情况下为字符串添加字符,只需将字符串中的属性复制到您添加文本的位置:
[textView.textStorage replaceCharactersInRange:NSMakeRange(textView.textStorage.length, 0) withString:@"\nhello world"];
您可能还想向下滚动:
[textView scrollRangeToVisible:NSMakeRange(textView.storage.length, 0)];
性能良好,甚至高达千兆字节的数据。 NSTextView非常高效,特别是在对内容进行少量更改时。