Pregunta

  

Duplicar posible:
   ¿Cómo concatenar cadenas en Objective-C?

En primer lugar, la plataforma es iPhone y label.text cambia la etiqueta mostrada. Considere este escenario:

Tengo una matriz de enteros. Y quiero mostrarlo en la pantalla.

Esta es mi opinión sobre ella:

-(IBAction) updateText: (id)sender {
   int a[2];
   a[0]=1;
   a[1]=2;
   a[2]=3;
   for (int i=0; i<=10;i++)
     label.text = [NSString stringByAppendingString: [NSString stringWithFormat: @"%i", a[i]]]; 
}

Como podrán ver, estoy muy confundido. Pls pls me ayude a cabo: (

¿Fue útil?

Solución

Prueba esto:

NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
    [theString appendString:[NSString stringWithFormat:@"%i ",i]];
}
label.text = theString;

Otros consejos

Dado que está utilizando un bucle, no ser un poco cuidadoso con ambas soluciones de Tom y Benjie. Cada uno de ellos crean un objeto autoreleased extra por iteración. Para un pequeño lazo, eso está bien, pero si el tamaño del bucle es ilimitada o si las cadenas son grandes, esto puede conducir a un aumento muy grande de memoria y el rendimiento éxito. Particularmente en el iPhone, este es exactamente el tipo de bucle que puede conducir a problemas de memoria sorprendentes debido a los picos de memoria de corta duración.

La siguiente solución tiene un menor consumo de memoria (que es también ligeramente más rápido y requiere menos mecanografía). Tenga en cuenta la llamada a -appendFormat: en lugar de -appendString. Esto evita la creación de una segunda cadena que se desecha. Recuerde que la cadena final tiene un espacio extra en el extremo que es posible que desee deshacerse de él. Se puede arreglar eso ya sea por el tratamiento de la primera o la última iteración de manera diferente, o recortando el último espacio después del bucle.

NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
    [theString appendFormat:@"%i ",i];
}
label.text = theString;

No se olvide [NSArray componentsJoinedByString:]. En este caso usted no tiene un NSArray, pero en los casos más comunes donde se hace, esto es probablemente la mejor manera de conseguir lo que estás buscando.

//NSArray *chunks   
string = [chunks componentsJoinedByString: @","];

Otro método sin usar NSMutableString:

NSString* theString = @"";
for (int i=0; i<=10;i++){
    theString = [theString stringByAppendingFormat:@"%i ",i];
}
label.text = theString;

Esta es una implementación completa (corrección de sus rangos):

-(IBAction) updateText: (id)sender {
     int a[3];
     a[0]=1;
     a[1]=2;
     a[2]=3;
     NSString *str = @"";
     for (int i=0; i<3;i++)
       str = [str stringByAppendingFormat:@"%i ",i];
     label.text = str;
}

También puede hacerlo de esta manera (por ejemplo, si usted quiere una lista separada por comas):

-(IBAction) updateText: (id)sender {
     int a[3];
     a[0]=1;
     a[1]=2;
     a[2]=3;
     NSMutableArray *arr = [NSMutableArray arrayWithCapacity:3];
     for (int i=0; i<3;i++)
         [arr addObject:[NSString stringWithFormat:@"%i",i]];

     label.text = [arr componentsJoinedByString:@", "];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top