2011-07-01 1 views
0

여기에 명확한 질문이 있습니다. 나는 원래 stringByAppendingString 방법을 사용하여 두 개의 문자열을 연결하려고 시도했습니다 :연결 방법의 목적 - 차이점

NSString *dataString = @","; 
NSInteger i = 0; 
NSString *cycleCountString = @""; 
for (i = 0; i<[[self cycleList] count]; i++) { 

    cycleCountString = [NSString stringWithFormat:@"cycle#%d,",i]; 
    [dataString stringByAppendingString:cycleCountString]; 
} 
NSLog(@"DataString is: %@",dataString); 

을하지만 dataString에 추가되지 않는 한 cycleCountString 경우와 같이 NSLog 그냥 ","을하고 출력하기했다.

독서 후 : HTTP :

: //stackoverflow.com/questions/510269/how-do-i-concatenate-strings-in-objective-c, 내가 대신 stringWithFromat를 수행하여 문제를 해결할 수 있었다
NSString *dataString = @","; 
NSInteger i = 0; 
NSString *cycleCountString = @""; 
for (i = 0; i<[[self cycleList] count]; i++) { 

    cycleCountString = [NSString stringWithFormat:@"cycle#%d,",i]; 
    dataString = [NSString stringWithFormat:@"%@%@",dataString,cycleCountString]; 


} 
NSLog(@"DataString is: %@",dataString); 

이전 방법이 작동하지 않는 이유는 무엇입니까? stringByAppendingString은 내가 생각하는대로 작동하지 않습니까?

감사합니다.

답변

3

dataString 값을 절대 업데이트하지 않습니다.

dataString = [dataString stringByAppendingString: cycleCountString]; 
+0

/마른 세수. 그래, 그게 다야. 고맙습니다! – hemlocker

+0

문제 없음 :) 나는 항상 그런 것들을 놓친다. –

1

NSString 인스턴스는 변경할 수 없으므로 변경할 수 없습니다. stringByAppendingString:이 원래 NSString 인스턴스를 변경하지 않으면 새로운 NSString을 생성하고이를 반환합니다.

stringWithFormat:의 결과를 dataString에 할당하므로 새 버전이 작동합니다. 문서

NSString *errorTag = @"Error: "; 
NSString *errorString = @"premature end of file."; 
NSString *errorMessage = [errorTag stringByAppendingString:errorString]; 

문자열 생산에

dataString = [dataString stringByAppendingString:cycleCountString]; 
1

예 :이 같은 뭔가 이전 버전의 작업을 할 수있다 "오류 :. 파일의 조기 종료를". 유

NSString *dataString = @","; 
NSInteger i = 0; 
NSString *cycleCountString = @""; 
for (i = 0; i<[[self cycleList] count]; i++) { 

    cycleCountString = [NSString stringWithFormat:@"cycle#%d,",i]; 

    dataString=[dataString stringByAppendingString:cycleCountString];//this Line 
} 

NSLog(@"DataString is: %@",dataString); 

DataString을 datastring에 agian를 지정하지 않았기 때문에

-1

이다, 사이클 # 0, 사이클 # 1주기 # 2,