Как связать строку в Objective C (iPhone)? [дубликат]

После того, как вы выполните один из этих приемов, чтобы переименовать ваш пакет, вы можете начать видеть ошибки.

Если / когда ваш R.java не генерируется должным образом, вы получите много ошибок в вашем проекте, например error: cannot find symbol class R, а также error: package R does not exist.

Не забудьте проверить манифест приложения. Имя пакета манифеста должно соответствовать действительному имени пакета. Кажется, R.java генерируется из манифеста приложения и может вызвать эти ошибки, если есть несоответствие.

Не забудьте проверить соответствие атрибута package в <manifest package="com.yourcompany.coolapp">

21
задан Community 23 May 2017 в 11:48
поделиться

4 ответа

Попробуйте следующее:

NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
    [theString appendString:[NSString stringWithFormat:@"%i ",i]];
}
label.text = theString;
36
ответ дан 29 November 2019 в 06:32
поделиться

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

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

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

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

17
ответ дан 29 November 2019 в 06:32
поделиться

Другой метод без использования 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:@", "];
}
4
ответ дан 29 November 2019 в 06:32
поделиться
//NSArray *chunks   
string = [chunks componentsJoinedByString: @","];
7
ответ дан 29 November 2019 в 06:32
поделиться