如何将 NSTextView
的内容转换为 NSData
,再将其转换回来并显示在 Mac OS X 上?
可以使用 textView.textStorage.string
(其中 textView 是 NSTextView
对象)将文本转换为没有格式的纯文本。但是,我想保留文本的格式。
实际上我已经实现了一种方法,可以达到目的,但我不能确保它总是有效。我对 NSTextStorage
对象本身进行编码并写入文件,然后作为 NSAttributedString
对象读取回来。(NSTextStorage
是 NSAttributedString
的子类)。我这样做是因为我不能直接设置 NSTextView
的 textStorage
属性,但我可以设置其富文本字符串。
以下是我的代码(结果存储在 data
中):
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:textView.textStorage forKey:@"attrs"];
[archiver finishEncoding];
为了将其读回:
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSAttributedString* theAttrString = [unarchiver decodeObjectForKey:@"attrs"];
[unarchiver finishDecoding];
并将其显示出来:
[textView.textStorage setAttributedString:theAttrString];
如果我将一个 NSTextStorage
对象编码并解码为一个 NSAttributedString
对象,这种方法是否保证可行?