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
变量之后错过了msgFormat
。 Xcode的警告虽然令人困惑 - 但应该是missing sentinel in function call
。
答案 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了解详情。