Вопрос

Возможный Дубликат:
Как мне объединить строки в Objective-C?

Во-первых, платформа - iPhone, и label.text изменяет отображаемую метку.Рассмотрим этот сценарий:

У меня есть массив целых чисел.И я хочу отобразить это на экране.

Вот мой взгляд на это:

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

Как вы, наверное, можете видеть, я в полном замешательстве.Пожалуйста, пожалуйста, помогите мне: (

Это было полезно?

Решение

Попробуй это:

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

Другие советы

Поскольку вы используете цикл, будьте несколько осторожны с решениями Тома и Бенджи.Каждый из них создает дополнительный автоматически выпущенный объект за итерацию.Для небольшого цикла это нормально, но если размер цикла неограничен или если строки большие, это может привести к очень большому скачку объема памяти и снижению производительности.В частности, на iPhone это именно тот цикл, который может привести к неожиданным проблемам с памятью из-за кратковременных скачков памяти.

Следующее решение имеет меньший объем памяти (оно также немного быстрее и требует меньше ввода).Обратите внимание на призыв к -appendFormat: вместо того , чтобы -appendString.Это позволяет избежать создания второй строки, которая будет выброшена.Помните, что в конце последней строки есть дополнительный пробел, от которого вы, возможно, захотите избавиться.Вы можете исправить это, либо обработав первую или последнюю итерацию по-разному, либо обрезав последний пробел после цикла.

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

Не забывай [NSArray componentsJoinedByString:].В этом случае у вас нет NSArray, но в обычных случаях, когда у вас есть, это, вероятно, лучший способ получить то, что вы ищете.

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

Другой метод без использования NSMutableString:

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

Вот полная реализация (корректирующая ваши диапазоны):

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

Вы также могли бы сделать это следующим образом (напримересли вам нужен список, разделенный запятыми):

-(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:@", "];
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top