0

でかなり奇妙な問題に遭遇しましたstringWithFormat:。文字列を作成し、アラート パネルに割り当てます。

ただし、何らかの理由で、Xcode は、フォーマット文字列が文字列リテラルであるにもかかわらず、文字列リテラルではないと言っていますか? 誰でも光を当てることができますか?

ここに画像の説明を入力

ヘッダー宣言:

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);

編集:ヘッダー宣言を見て、それは私に来ました。変数のnil後にa がありませんでした。msgFormatただし、Xcode の警告は紛らわしいものでした。代わりにそうすべきmissing sentinel in function callでした。

4

2 に答える 2

0

NSString問題は、同じことを行うメソッド内でパラメーターを使用して aを渡そうとすることだと思います。したがって、NSBeginCriticalAlertSheet実際には別のパラメーターを探しています。

別のものに入れるとNSString stringWithFormat:、解析しようとする代わりにリテラル文字列を取ります。

だからあなたのNSBeginCriticalAlertSheet:_warningに置き換える必要があります

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

詳細については、warning-format-not-a-string-literal-and-no-format-argumentsも参照してください。

于 2013-01-08T09:53:40.847 に答える
0

これを使って

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

    /*code for alert sheet
于 2013-01-08T09:46:54.243 に答える