2010-05-11 13 views
11

Tengo una NSString y no aplican la siguiente declaración:stringByAppendingFormat no trabajar

NSString *myString = @"some text"; 
[myString stringByAppendingFormat:@"some text = %d", 3]; 

ningún registro o error, la cadena simplemente no se ve modificado. Ya lo intenté con NSString (como se documenta) y NSMutableString.

cualquier pista bienvenida.

Respuesta

35

Yo sugeriría corregir a (documentation):

NSString *myString = @"some text"; 
myString = [myString stringByAppendingFormat:@" = %d", 3]; 

A partir de los documentos:

Devuelve una cadena hecha añadiendo al receptor una cadena construida a partir de una cadena de formato dada y la siguiente argumentos.

11

La creación de cadenas con @"" siempre da como resultado cadenas inmutables. Si desea crear un nuevo NSMutableString, hágalo de la siguiente manera.

NSMutableString *myString = [NSMutableString stringWithString:@"some text"]; 
[myString appendFormat:@"some text = %d", 3]; 
13

Está funcionando, solo está ignorando el valor de retorno, que es la cadena con el formato adjunto. (Consulte the docs.) No puede modificar un NSString: para modificar un NSMutableString, use -appendFormat:.

Por supuesto, en el ejemplo de juguete, se puede acortar a esto:

NSString *myString = [NSString stringWithFormat:@"some text = %d", 3]; 

Sin embargo, lo más probable es que usted necesita para anexar una cadena de formato a una cadena existente creado en otra parte. En ese caso, y particularmente si está agregando varias partes, es bueno pensar y equilibrar los pros y los contras de usar una cuerda mutable o varias cadenas inmutables y autorreleasadas.

-1

Tuve un mensaje de advertencia similar al agregar una cadena localizada. Así es como lo resolví

NSString *msgBody = [msgBody stringByAppendingFormat:@"%@",NSLocalizedString(@"LOCALSTRINGMSG",@"Message Body")]; 
+0

A menos que realmente tenga un formato para anexar, es mejor usar -stringByAppendingString: en su lugar. – trudyscousin