Objective-C (iPhone)에서 문자열을 연결하는 방법은 무엇입니까? [복제하다
-
18-09-2019 - |
문제
가능한 복제 :
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]]];
}
당신이 볼 수 있듯이, 나는 꽤 혼란 스럽습니다. pls pls가 나를 도와주세요 :(
해결책
이 시도:
NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
[theString appendString:[NSString stringWithFormat:@"%i ",i]];
}
label.text = theString;
다른 팁
루프를 사용하고 있으므로 Tom과 Benjie의 솔루션에 대해 다소주의하십시오. 그들은 각각 반복 당 여분의 자동 입력 객체를 만듭니다. 작은 루프의 경우 괜찮습니다. 루프의 크기가 생겨나지 않거나 문자열이 크면 메모리 스파이크와 성능이 매우 커질 수 있습니다. 특히 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:@", "];
}