Return Value An NSString object
initialized by converting the bytes in
data into Unicode characters using
encoding. The returned object may be
different from the original receiver.
Returns nil if the initialization
fails for some reason (for example if
data does not represent valid data for
encoding).
You should try other encoding to check if it solves your problem
Note: In the event this somehow fails, you can unpack your NSData with NSKeyedUnarchiver , then repack the (id)unpacked again via NSKeyedArchiver, and that NSData form should be base64 encodeable.
id unpacked = [NSKeyedUnarchiver unarchiveObjectWithData:data];
data = [NSKeyedArchiver archivedDataWithRootObject:unpacked];