¿Cómo convierto un char a un NSString en Objective-C?Casting o conversión de un char a un NSString en Objective-C
No es una cadena C terminada en nulo, solo un simple char c = 'a'
.
¿Cómo convierto un char a un NSString en Objective-C?Casting o conversión de un char a un NSString en Objective-C
No es una cadena C terminada en nulo, solo un simple char c = 'a'
.
Puede utilizar stringWithFormat:
, pasando en un formato de %c
para representar un carácter, como este:
char c = 'a';
NSString *s = [NSString stringWithFormat:@"%c", c];
se puede hacer una C-secuencia de un personaje como este:
char cs[2] = {c, 0}; //c is the character to convert
NSString *s = [[NSString alloc] initWithCString:cs encoding: SomeEncoding];
Alternativamente, si se sabe que el carácter es un carácter ASCII (es decir, letra latina, número o signo de puntuación), aquí hay otra forma:
unichar uc = (unichar)c; //Just extend to 16 bits
NSString *s = [NSString stringWithCharacters:&uc length:1];
El último fragmento seguramente falla (no se cuelga, pero produce una cadena incorrecta) con caracteres nacionales. Para aquellos, la extensión simple a 16 bits no es una conversión correcta a Unicode. Es por eso que se necesita el parámetro encoding
.
También tenga en cuenta que los dos fragmentos anteriores producen una cadena con diferentes requisitos de desasignación. Este último hace una cadena autorrellenada, el primero hace una cadena que necesita una llamada [liberación].
Impresionante, gracias BoltClock. Soy nuevo en Objective-C y muchas de estas cosas son un poco indescifrables para mí en este momento. ¡Gracias! :-) – Senkwe
@Hovito: si utilizas Xcode, recuerda que siempre está el visor de documentación incorporado :) – BoltClock
stringWithFormat es una exageración, en mi humilde opinión. –