我需要在NSTextView中为所选文本添加自定义属性.所以我可以通过获取选择的属性字符串,添加自定义属性,然后用新的属性字符串替换选择.
所以现在我将文本视图的归因字符串作为NSData并将其写入文件.后来当我打开该文件并将其还原到文本视图时,我的自定义属性已经消失了!在完成自定义属性的整个方案后,我发现自定义属性不会为您保存.看这里的重要说明:http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/AttributedStrings/Tasks/RTFAndAttrStrings.html
解决方法
保存NSAttributedString的正常方法是使用RTF,RTF数据是NSAttributedString的-dataFromRange:documentAttributes:error:method的NSAttributedString方法.
但是,RTF格式不支持自定义属性.相反,您应该使用NSCoding协议归档您的属性字符串,这将保留自定义属性:
//asssume attributedString is your NSAttributedString //encode the string as NSData NSData* stringData = [NSKeyedArchiver archivedDataWithRootObject:attributedString]; [stringData writeToFile:pathToFile atomically:YES]; //read the data back in and decode the string NSData* newStringData = [NSData dataWithContentsOfFile:pathToFile]; NSAttributedString* newString = [NSKeyedUnarchiver unarchiveObjectWithData:newStringData];