我的Xcode中有以下代码片段:
NSString *digit [[sender titlelabel] text];
NSLog([digit]);
我尝试构建应用程序,并为行NSLog([digit]);
Warning: Format not a string literal and no format arguments
您能告诉我如何解决此警告信息吗?消息实际意味着什么?
答案 0 :(得分:50)
试试这段代码:
NSString *digit = [[sender titlelabel] text];
NSLog(@"%@", digit);
该消息表示您使用digit
变量的语法不正确。如果您没有发送任何消息 - 您不需要任何括号。
答案 1 :(得分:25)
像这样使用NSLog()
:
NSLog(@"The code runs through here!");
或者像这样 - 使用占位符:
float aFloat = 5.34245;
NSLog(@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat);
在NSLog()
中,您可以像+ (id)stringWithFormat:(NSString *)format, ...
float aFloat = 5.34245;
NSString *aString = [NSString stringWithFormat:@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat];
您也可以添加其他占位符:
float aFloat = 5.34245;
int aInteger = 3;
NSString *aString = @"A string";
NSLog(@"This is my float: %f \n\nAnd here is my integer: %i \n\nAnd finally my string: %@", aFloat, aInteger, aString);
答案 2 :(得分:4)
为什么digit
附近有括号?
它应该是
NSLog("%@", digit);
你在第一行中也错过了=
...
NSString *digit = [[sender titlelabel] text];
答案 3 :(得分:3)
NSLog(@"%@", digit);
控制台中显示了什么?
答案 4 :(得分:3)
正如警告试图解释的那样,使用NSLog的正确方法是使用格式化程序,而不是传入文字:
而不是:
NSString *digit = [[sender titlelabel] text];
NSLog(digit);
使用:
NSString *digit = [[sender titlelabel] text];
NSLog(@"%@",digit);
它仍然可以按照第一种方式工作,但这样做会消除警告。
答案 5 :(得分:2)
键入:BOOL 数据(是/否)或(1/0)
BOOL dtBool = 0;
OR
BOOL dtBool = NO;
NSLog(dtBool ? @"Yes" : @"No");
输出:否
类型:长
long aLong = 2015;
NSLog(@"Display Long: %ld”, aLong);
OUTPUT:显示长:2015
long long veryLong = 20152015;
NSLog(@"Display very Long: %lld", veryLong);
输出:显示很长:20152015
type:String
NSString *aString = @"A string";
NSLog(@"Display string: %@", aString);
OUTPUT:显示字符串:字符串
键入:Float
float aFloat = 5.34245;
NSLog(@"Display Float: %F", aFloat);
输出:isplay Float:5.342450
类型:整数
int aInteger = 3;
NSLog(@"Display Integer: %i", aInteger);
OUTPUT:显示整数:3
NSLog(@"\nDisplay String: %@ \n\n Display Float: %f \n\n Display Integer: %i", aString, aFloat, aInteger);
输出: 字符串:一个字符串
展示浮动:5.342450
显示整数:3
http://luterr.blogspot.sg/2015/04/example-code-nslog-console-commands-to.html
答案 6 :(得分:0)
NSLog([digit]); // [] are the messages in Objective-C, just like methods or functions in other programming languages
因为你只需要打印'digit'的值
或者你可以打电话 -
NSLog(digit); // A warning would occur - Format string is not a string literal (potentially insecure)
或
NSLog(@"%@",digit]); // But if you use %@ to reference the object, the warning will go away.
这两种方法都可以,但第二种方法是登录到控制台的正确方法。