En Objective C para castear un objeto NSData a un objeto NSString se realiza de dos maneras:
Si el objeto no termina en null hay que usar el método -initWithData:encoding:
NSString* newStr = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
Si el objeto termina en null hay que usar el método -stringWithUTF8String para eliminar el al final de la cadena.
NSString* newStr = [NSString stringWithUTF8String:[data bytes]];