versiones plataforma objective framework ejemplos compiler caracteristicas objective-c cocoa

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.