2013-01-08 2 views
0

stringWithFormat:이라는 다소 이상한 문제가 있습니다. 문자열을 만들어 경고 패널에 지정합니다.stringWithFormat : 형식 문자열이 문자열 리터럴이 아닙니다

Xcode는 어떤 이유로 포맷 문자열이 문자열 리터럴이 아니라고 말합니다. 누구든지 약간의 빛을 비추 수 있습니까?

enter image description here

헤더 선언 :

APPKIT_EXTERN void NSBeginCriticalAlertSheet(NSString *title, NSString *defaultButton, NSString *alternateButton, NSString *otherButton, NSWindow *docWindow, id modalDelegate, SEL didEndSelector, SEL didDismissSelector, void *contextInfo, NSString *msgFormat, ...) NS_FORMAT_FUNCTION(10,11); 

편집

: 헤더 선언을 보면, 그것은 나에게왔다. msgFormat 변수 다음에 nil이 누락되었습니다. Xcode의 경고는 혼란 스러웠습니다. 대신 missing sentinel in function call이어야합니다.

+3

대신 여기에 코드를 붙여 넣으면 코드를 사용하고 확인하는 것이 더 쉬울 것입니다. –

+0

무엇이 다른가요? 코드는 경고를 표시하지 않습니다. – Pripyat

+1

코드를 복사하여 IDE에 붙여 넣고 컴파일, 편집 및 수정할 수 있습니다. 그렇지 않으면 정확한 코드를 입력해야합니다 .... 우리가 당신의 코드를 보아서 만 말할 수있는 주인이 아니라면. –

답변

0

사용

NSString *localizedStr=[NSString stringWithFormat:@"bla bla %@ bla bla",_dev.name]; 
    NSString *_warning = NSLocalizedString(localizedStr); 

    /*code for alert sheet 
+0

'Bundle.h'에 정의 된'NSLocalizedString' 매크로와 혼동되어 에러가 발생합니다. – Pripyat

+0

편집 한 것을 시도하십시오 ... – Ishu

0

나는 문제가 동일한 작업을 수행하는 방법 내부 paramater와 NSString을 통과하려고한다는 생각이. 따라서 NSBeginCriticalAlertSheet은 실제로 다른 매개 변수를 찾고 있습니다.

NSString stringWithFormat:에 넣으면 구문 분석하는 대신 리터럴 문자열이 필요합니다. 그래서에서

당신의 NSBeginCriticalAlertSheet : _warning는 또한 자세한 내용은 warning-format-not-a-string-literal-and-no-format-arguments를 참조

[NSString stringWithFormat:@"%@", _warning] 

로 교체해야합니다.

+1

사실, 저는 결국 단순히 'nil'이 누락되었습니다. :) 내 편집을 참조하십시오. – Pripyat

관련 문제