2013-01-08 81 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

我認爲問題是,你試圖傳遞一個NSString與做同樣的方法內paramater。所以NSBeginCriticalAlertSheet實際上是在尋找另一個參數。

如果你把它放在另一個NSString stringWithFormat:它需要文字字符串,而不是試圖解析它。

所以在你NSBeginCriticalAlertSheet_warning應該

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

更換另見warning-format-not-a-string-literal-and-no-format-arguments以獲取更多信息。

+1

其實,我最後簡單地錯過了'nil'。 :)看我的編輯。 – Pripyat