2011-10-01 8 views
1

내 프로그램이 확인을 작동하지만 컴파일이 경고를 얻을 :경고, 아이폰 OS

형식이 아닌 문자열 리터럴없고 형식 인수

RomanosBasicos 인을 문자열의 배열 :

RomanosBasicos=[[NSArray alloc] initWithObjects:@"M",@"CM",@"D",@"CD",@"C",@"XC",@"L",@"XL",@"X",@"IX",@"V",@"IV",@"I" , nil]; 

내가이 줄 경고 얻을 :

도움을 주셔서 감사합니다. 대신

+0

NSArray는 NSString이 아닌 NSObject를 제공합니다. 던져. –

답변

2

temp = [temp stringByAppendingFormat:[RomanosBasicos objectAtIndex:i]]; 

사용

temp = [temp stringByAppendingString:[RomanosBasicos objectAtIndex:i]]; 

하지만 다음 stringByAooendingFormat:을 사용하려면이

temp = [temp stringByAppendingFormat:@"%@", [RomanosBasicos objectAtIndex:i]]; 

난 당신이 지금 무슨 경고를 얻을 생각해야 방법.

+2

경고에 대한 이유는 변수로 형식 문자열을 입력하는 것이 매우 위험하기 때문에 임의의 형식 문자열을 여기에 입력 할 수있는 경우 잠재적 인 보안 위반이 발생할 수 있습니다. 이것은 Objective-C를 다룰 때 항상 컴파일러 설정에서 경고를 오류로 취급하는 많은 이유 중 하나입니다. –

0

[temp stringByAppendingString : [RomanosBasicos objectAtIndex : i]]를 의미합니다. 대신에?

0

stringByAppendingFormat:은 인수가있는 Formatted NSString을 예상합니다. 귀하의 프로그램에서 실제로 stringByAppendingString:을 원하는 것처럼 보입니다 :

temp = [temp stringByAppendingString:[RomanosBasicos objectAtIndex:i]];