문제

가능한 복제 :
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:@", "];
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top