iphone - descargar - ios 12 cuando sale
NSData para mostrar como una cadena (3)
Estoy construyendo una aplicación para iPhone y me he quedado con lo siguiente:
unsigned char hashedChars[32];
CC_SHA256([inputString UTF8String], [inputString lengthOfBytesUsingEncoding:NSASCIIStringEncoding], hashedChars);
NSData *hashedData = [NSData dataWithBytes:hashedChars length:32];
NSLog(@"hashedData = %@", hashedData);
El registro se muestra como:
hashedData = <abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh>
- note hashedData es NSData, no NSString
Pero lo que necesito es convertir hashedData en NSString que se parece a:
NSString *someString = @"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh";
Básicamente, el resultado debe ser como hashedData, excepto que no quiero que aparezcan los corchetes angulares y los espacios intermedios.
Defina un NSCharacterSet que contenga los caracteres ofensivos y luego filtre su cadena usando -stringByTrimmingCharactersInSet :.
He encontrado la solución y creo que estaba siendo estúpido.
Básicamente todo lo que tenía que hacer es:
NSString *someString = [NSString stringWithFormat:@"%@", hashedData];
// obligando a los NSData
a convertirse en NSString
Una vez más, gracias a todos los que intentaron ayudar, muy apreciados.
Utilice el método NSString initWithData: encoding:.
NSString *someString = [[NSString alloc] initWithData:hashedData encoding:NSASCIIStringEncoding];
(Editar para responder a tu comentario :)
En ese caso, la respuesta de Joshua ayuda:
NSCharacterSet *charsToRemove = [NSCharacterSet characterSetWithCharactersInString:@"< >"];
NSString *someString = [[hashedData description] stringByTrimmingCharactersInSet:charsToRemove];