2011-08-15 14 views
10

Soy un chico de Java que viene a Objective-C. En Java, añadir una variable a una cadena que tendría que hacer algo a lo largo de las líneas de:Añadir una cadena con la variable

someString = "This string is equal to " + someNumber + "."; 

no puedo encontrar la manera de hacerlo en Objective-C embargo. Tengo un NSMutableString que me gustaría agregar al medio de una cadena. ¿Cómo voy a hacer esto?

que he probado:

NSString *someText = @"Lorem ipsum " + someMutableString; 
NSString *someText = @"Lorem ipsum " + [someMutableString stringForm]; 

y algunas otras cosas, ninguno de los cuales parecen funcionar. También se intercambia el + s con , s.

Respuesta

27

Puede utilizar appendString:, pero en general, yo prefiero:

NSString *someText = [NSString stringWithFormat: @"Lorem ipsum %@", someMutableString]; 
NSString *someString = [NSString stringWithFormat: @"This is string is equal to %d.", someInt]; 
NSString *someOtherString = [NSString stringWithFormat: @"This is string is equal to %@.", someNSNumber]; 

o, alternativamente:

NSString *someOtherString = [NSString stringWithFormat: @"This is string is equal to %d.", [someNSNumber intValue]]; 

etc ...

Estas cadenas están autoreleased, así que tenga cuidado no perder su valor Si es necesario, consérvelos o cópielos y libérelos usted mismo más tarde.

9

Prueba esto:

NSMutableString * string1 = [[NSMutableString alloc] initWithString:@"this is my string"]; 

[string1 appendString:@" with more strings attached"]; 

//release when done 
[string1 release]; 
6

Es necesario utilizar stringByAppendingString

NSString* string = [[NSString alloc] initWithString:@"some string"]; 
string = [string stringByAppendingString:@" Sweet!"]; 

No se olvide de [string release]; cuando el hecho, por supuesto.

+1

Su gestión de la memoria está en mal estado. Es la cadena original creada por 'alloc' que necesitas liberar, pero la estás tirando (filtrándola) y reemplazándola con el resultado de' stringByAppendingString: ', que no debería ser liberada. – Chuck

+0

Me doy cuenta de que la administración de la memoria puede confundirme aquí, pero ¿no es mi segunda afirmación que apunta al mismo bloque de memoria, en el que solo estoy reasignando el valor al valor existente más la cadena adjunta? – Trevor

+1

No, son dos objetos diferentes en dos ubicaciones de memoria diferentes. Las NSStrings simples no pueden cambiar su valor, por lo que 'stringByAppendingString:' devuelve una nueva cadena con el valor de la cadena original más el valor agregado. – Chuck

0
NSMutableString *string = [[NSMutableString alloc] init]; 

[string appendFormat:@"more text %@", object ]; 
Cuestiones relacionadas