如何将NSTextView的格式化内容转换为字符串

时间:2013-04-26 13:13:22

标签: ios objective-c cocoa nstextview

我需要将NSTextView的内容从Mac应用程序传输到iOS应用程序。我正在使用XML作为传输文件格式。

所以我需要将NSTextView的内容(文本,字体,颜色atd。)保存为字符串。有什么方法可以做到吗?

2 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是归档NSAttributedString值。大纲示例代码直接输入答案:

NSTextView *myTextView;
NSString *myFilename;
...
[NSKeyedarchiver archiveRootObject:myTextStorage.textStorage
                            toFile:myFilename];

要读回来:

myTextView.textStorage.attributedString = [NSKeyedUnarchiver unarchiveObjectWithFile:myFilename];

这就是创建和回读文件所需的全部内容。有匹配的方法可以创建NSData而不是文件,您可以将NSData转换为NSString,或者只将一个插入到NSDictionary中,并将其作为plist(XML)等序列化。

答案 1 :(得分:1)

您最好的选择可能是将文本存储为RFTD,并通过NSAttributedString将其加载到其他文本视图中。

// Load
NSFileWrapper* filewrapper = [[NSFileWrapper alloc] initWithPath: path];
NSTextAttachment *attachment = [[NSTextAttachment alloc] initWithFileWrapper: filewrapper];
NSAttributedString* origFile = [NSAttributedString attributedStringWithAttachment: attachment];

// Save
NSData *data = [origFile RTFDFromRange: NSMakeRange(0, [origFile length]) documentAttributes: nil];
[[NSFileManager defaultManager] createFileAtPath: path contents: data attributes:nil];