I am trying to convert NSAttributedString
to NSData
using RTFDFromRange
method. Getting this:
No visible @interface for 'NSAttributedString' declares the selector 'RTFDFromRange:documentAttributes:
What is wrong with my code?
NSAttributedString *val=self.textview.attributedText;
NSData *data = [val RTFDFromRange:NSMakeRange(0, self.textview.text.length) documentAttributes:nil];
NSAttributedString
does not have a method called RTFDFromRange
for iOS, but only for Mac OS X.
To convert NSAttributedString
to NSData
in iOS, you can try these two approaches:
1. Using initWithData
:
NSMutableAttributedString *val = [[NSMutableAttributedString alloc] initWithData:data options:nil documentAttributes:nil error:nil];
2. Using NSKeyedArchiver
:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject: val];
And to convert the NSData
back to a string:
NSAttributedString *val = [NSKeyedUnarchiver unarchiveObjectWithData: data];
This code works on both Mac and iOS.
See the Apple docs here.
That method is only available under Cocoa (OSX) as it's part of the AppKit Additions to NSAttributedString
.
Here's an open source category that might do what you want under iOS (not personally tested, however).