NSAttributedString到NSData没有可见@interface为'NSAttributedString'声明select器'RTFDFromRange:documentAttributes:
我想使用RTFDFromRange
方法将NSAttributedString
转换为NSData
。 得到这个:
No visible @interface for 'NSAttributedString' declares the selector 'RTFDFromRange:documentAttributes:
我的代码有什么问题?
NSAttributedString *val=self.textview.attributedText; NSData *data = [val RTFDFromRange:NSMakeRange(0, self.textview.text.length) documentAttributes:nil];
对于iOS, NSAttributedString
没有一个名为RTFDFromRange
的方法,但只适用于Mac OS X.
要在iOS NSAttributedString
转换为NSData
,可以尝试以下两种方法:
1.使用initWithData
:
NSMutableAttributedString *val = [[NSMutableAttributedString alloc] initWithData:data options:nil documentAttributes:nil error:nil];
2.使用NSKeyedArchiver
:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject: val];
并将NSData
转换回string:
NSAttributedString *val = [NSKeyedUnarchiver unarchiveObjectWithData: data];
此代码适用于Mac和iOS。
请参阅Apple文档。
该方法仅在Cocoa(OSX)下可用,因为它是NSAttributedString
添加到NSAttributedString
的一部分。
这里有一个开源的类别 ,可以做你想在iOS下(不是亲自testing,但是)。