2011-08-19 5 views
1

나는 여기를 보았지만 똑같은 상황을 보지 못했습니다. 도움을 주실 분은 누구든지 고마워요.오류 받기 "형식이 문자열 리터럴이 아니고 형식 인수가 없습니다."

나는 곧 내 풋볼 팀 경기를 표시하는 그룹화 된 표가 있습니다. 홈 게임 및 어웨이 게임.

 NSString *message = [[NSString alloc] initWithFormat:rowValue]; 
Error Message: Format not a string literal and no format arguments 

이것은 무엇으로부터 비롯되는 것인지는 확실하지 않습니다.

온라인에서 찾은 자습서를 사용했습니다. 모든 것을 복사하여 붙여 넣었습니다. 개인 테이블에 필요한 값만 변경했습니다. 이게 내가 얻는 유일한 오류 야? 어떤 도움 ??

편집 : 더 많은 코드를 제공해야하는 경우 알려 주시기 바랍니다.

감사합니다.

- 안토니 롬바르디

+0

"rowValue"는 어떤 유형의 객체/변수입니까? –

답변

0

당신이 무슨 뜻인지 확신하지 않습니다. 더 큰 코드 블록을 입력하면 도움이 될 것입니다.

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
NSArray *listData =[self.tableContents objectForKey: 
        [self.sortedKeys objectAtIndex:[indexPath section]]]; 
NSUInteger row = [indexPath row]; 
NSString *rowValue = [listData objectAtIndex:row]; 

NSString *message = [[NSString alloc] initWithFormat:rowValue]; 

UIAlertView *alert = [[UIAlertView alloc] 
         initWithTitle:@"You Better Be There Or Be Watching It!" 
         message:message delegate:nil 
         cancelButtonTitle:@"Go Knights!" 
         otherButtonTitles:nil]; 
[alert show]; 
[alert release]; 
[message release]; 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 
0

다소 오래된 질문이며 오리지날 애스크 오랫동안 사라져 버린 것 같습니다 ...하지만 역사와 미래의 독자들에게 - 여기에있는 일이 있습니다.

message을 printf 스타일 형식 문자열로 생성했기 때문에 문제가 발생했습니다. initWithFormat은 % 문자가 대체를 나타내는 형식 문자열을 가져야합니다. float의 경우 % f, 정수의 경우 % d ...

정적 형식 문자열 (코드에서 직접 정의 된 문자열 리터럴) 대신 동적 문자열을 전달했습니다. 인수를 전달하지 않았기 때문에 컴파일러가 혼란 스럽습니다. 동적 문자열에 % 대체가 포함 된 경우 지옥의 문이 느슨해 지거나 가장 좋은 경우 앱이 다운됩니다.

인수가없는 형식 문자열을 갖는 것이 바람직하지 않으므로 오류가 발생합니다.

NSString *rowValue = [listData objectAtIndex:row]; 
NSString *message = rowValue; 

또는 더 간결 :

NSString *message = [listData objectAtIndex:row]; 

또는 사용하여 새 목표 - C 리터럴 구문과 첨자 :

NSString *message = listData[row]; 

당신과 함께 rowValuemessage 라인을 대체 할 수 그것을 해결하기 위해

관련 문제