如何在NSDictionary中保存(和检索)NSAttributedString

时间:2014-03-10 22:28:25

标签: objective-c cocoa nsdictionary nsattributedstring

我正在尝试将XML数据保存并检索到文件中。

为此目的,我正在使用NSDictionary的{​​{1}} 问题是,如何使用writeToFile:的{​​{1}}编写和检索磁盘上文件的属性字符串?

2 个答案:

答案 0 :(得分:2)

NSAttributedString不是a property list object,因此writeToFile:无效。

但它确实符合NSCoding,因此您可以write it to an archive将您的字典作为根对象(假设字典中的所有其他对象也符合)。

答案 1 :(得分:2)

如果您需要比归档对象更便携的东西,请考虑使用NSAttributedString的RTF表示:

    NSAttributedString* attrString = [[NSAttributedString alloc] initWithString:@"Attributed String" 
        attributes:@{ NSForegroundColorAttributeName: [NSColor redColor]}];
    NSData* rtfData = [attrString RTFFromRange:NSMakeRange(0, attrString.length) documentAttributes:nil];
    [rtfData writeToFile:@"string.rtf" atomically:YES];

你可以读回来:

    NSData* rtfData = [NSData dataWithContentsOfFile:@"string.rtf"];
    NSAttributedString* attrString = [[NSAttributedString alloc] initWithRTF:rtfData documentAttributes:nil];

此外,由于RTF是一种简单的文本格式,您可以将RTF数据转换为NSString并将其作为纯文本存储在字典中。