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之后缺少了一个。msgFormatXcode 的警告虽然令人困惑 - 它应该是missing sentinel in function call相反的。

4

2 回答 2

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 回答
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 回答