stringWithFormat:格式字符串不是字符串文字

时间:2013-01-08 09:30:29

标签: objective-c

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

编辑:查看标题声明,它来找我。我在nil变量之后错过了msgFormat。 Xcode的警告虽然令人困惑 - 但应该是missing sentinel in function call

2 个答案:

答案 0 :(得分:0)

使用此

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

    /*code for alert sheet

答案 1 :(得分:0)

我认为问题在于你尝试在一个方法中传递一个带有参数的NSString。所以NSBeginCriticalAlertSheet实际上是在寻找另一个参数。

如果你把它放在另一个NSString stringWithFormat:中,它需要文字字符串,而不是试图解析它。

因此,在您的NSBeginCriticalAlertSheet中:_warning应替换为

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

另请参阅warning-format-not-a-string-literal-and-no-format-arguments了解详情。