【发布时间】:2012-06-25 04:22:03
【问题描述】:
我应该如何将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,这种方法是否保证有效?
【问题讨论】:
-
我不明白为什么不这样做。这似乎是一种完全有效的序列化方法。然而,问题是“这是一个好方法吗?”有点主观,所以这里可能不是最好的问题。
-
谢谢 - 我已经编辑了最后一个问题以减少主观性。
标签: objective-c nsdata nstextview nsattributedstring nstextstorage