Pergunta

Duplicate possíveis:
Como faço para concatenar strings em Objective-C?

Em primeiro lugar, a plataforma é o iPhone e Label.Text muda o rótulo exibido. Considere este cenário:

Eu tenho um array de inteiros. E eu quero para exibi-lo na tela.

Aqui está a minha opinião sobre ele:

-(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 você provavelmente pode ver, eu estou muito confuso. Pls pls me ajudar: (

Foi útil?

Solução

Tente isto:

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

Outras dicas

Uma vez que você estiver usando um loop, que ser um pouco cuidadoso com as duas soluções de Benjie Tom e. Cada um deles cria um objeto autoreleased extra por iteração. Para um pequeno laço, tudo bem, mas se o tamanho do loop é ilimitada ou se as cordas são grandes, isso pode levar a um grande hit de memória de pico e desempenho. Particularmente no iPhone, este é exatamente o tipo de loop que pode levar a problemas de memória surpreendente devido a picos de memória de curta duração.

A solução a seguir tem um menor consumo de memória (que também é um pouco mais rápido e leva menos de digitação). Observe a chamada para -appendFormat: em vez de -appendString. Isto evita a criação de uma segunda cadeia que vai ser jogado fora. Lembre-se que a cadeia final tem um espaço extra no final que você pode querer se livrar. Você pode corrigir isso por qualquer tratamento a primeira ou a última iteração de forma diferente, ou aparando o último espaço após o loop.

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

Não esqueça [NSArray componentsJoinedByString:]. Neste caso, você não tem um NSArray, mas nos casos comuns onde você faz, esta é provavelmente a melhor maneira de obter o que você está procurando.

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

Outro método sem usar NSMutableString:

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

Aqui está uma implementação completa (corrigindo suas faixas):

-(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;
}

Você também pode fazê-lo como este (por exemplo, se você queria uma lista separada por vírgula):

-(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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top