objective-c - plataforma - versiones de objective c
¿La conversión de NSString a NSData fuerza un byte final? (1)
No, no lo hace. Mira este ejemplo:
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"v1", @"k1",
@"v2", @"k2",
nil];
NSLog(@"dict=%@", dict);
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:nil];
NSString *jsonAsString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSData *jsonDataFromString = [jsonAsString dataUsingEncoding:NSUTF8StringEncoding];
// DO NOT DO THIS:
// jsonDataFromString = [jsonDataFromString subdataWithRange:NSMakeRange(0, [jsonDataFromString length] - 1)];
NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:jsonDataFromString options:0 error:nil];
NSLog(@"jsonObject=%@", jsonObject);
Pruébalo y luego inténtalo con la línea "NO HACER ESTO" sin comentarios. Verás que no hay problema.
Esto es en respuesta a esta respuesta incorrecta: https://stackoverflow.com/a/7894952/192819
¿Convierte NSString así:
NSString *str = @"teststring";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
forzar un byte / 0 final, lo que significa
-[NSJSONSerialization:JSONObjectWithData:]
y otros fallarán a menos que lo eliminen.