2012-07-03 15 views
21

Soy relativamente nuevo en Objective C pero no con la programación. Me preguntaba cómo puedes agregar un NSString a otro. Estoy haciendo una aplicación en la que un usuario tiene que terminar una oración básica, y me preguntaba cómo obtener la cadena que el usuario ingresó y anexarla a la actual que está en la pantalla.Cómo agregar un NSString a otro NSString

Respuesta

41

Creo que está buscando la función stringByAppendingString de NSString. Vea el ejemplo a continuación.

NSString *errorTag = @"Error: "; 
NSString *errorString = @"premature end of file."; 
NSString *errorMessage = [errorTag stringByAppendingString:errorString]; 

produce la cadena "Error: fin prematuro de archivo.".

+0

Muchas gracias! ¡El ejemplo funciona genial! :) –

13

Parece que usted tiene su respuesta, pero también se puede utilizar el método stringWithFormat: así:

NSString *sample1 = @"Hello"; 
NSString *sample2 = @"Being appended"; 

NSString *complete = [NSString stringWithFormat:@"%@%@", sample1, 
sample2]; 
31

Esto también puede lograrse mediante el uso de un NSMutableString:

NSMutableString *string = [NSMutableString stringWithString:@"String 1"]; 
[string appendString:@"String 2"]; 
+1

si desea agregar datos (más cadenas) en la misma variable, entonces 'NSMutableString' es la solución real. 'stringByAppendingString' no es amigable con la memoria cuando desea agregar datos en la misma variable. – Ans

2

No se puede realmente anexe un NSString a otro porque la clase NSString no es mutable. Todas las estructuras de datos estándar tienen variedades mutables y no mutables (NSMutableString vs NSString, NSMutableArray vs NSArray, etc.). Si desea cambiar los contenidos sin reasignar un nuevo objeto, querrá usar la versión mutable. Puede volver a crear un nuevo NSString usando:

NSString* string3 = [NSString stringWithFormat:@"%@%@",string1,string2]; 

Esto es malo para el rendimiento, así que si usted va a hacerlo en un bucle o alguna zona sensible el rendimiento (es decir, mantener a anexar a la misma cadena de una y otra de nuevo) esto le garantiza un problema (he cometido este error antes).

lugar que es mejor usar el NSMutableString y anexar la segunda cadena a la misma:

NSMutableString* string1 = [NSMutableString alloc] init]; 
[string1 appendString:string2];