2012-03-08 107 views
20

我有这样的定义字符串常量:如何打印出字符串常量的NSLog在iOS

#define kMyString @"This is my string text!"; 

某处在代码中,我想打印出这段代码与NSLog的那样:

NSLog(@"This is it: %@",kMyString); 

但是得到一个构建错误:Expected expression

我已经看过苹果的Format Specifiers,但无法弄清楚。

有人可以请解释给我如何做到这一点?

谢谢!

+1

+1“这是它” – 2014-09-23 01:57:08

回答

37

你应该从kMyString定义中删除;

#define kMyString @"This is my string text!" 

你所采取的方式是等价于:

NSLog(@"This is it: %@", @"This is my string text!";); 
+1

啊是确实:-)太明显... – TheEye 2012-03-08 12:01:47

+0

我在问题出现打印错误。但问题依然存在。 OMG。 – 2012-03-08 12:07:05

+0

OMG。其实我也有输入错误的代码。删除分号,现在它工作。谢谢! – 2012-03-08 12:09:29

2

#define后删除分号,并使用%@,它会工作。

+0

但是,这将不再是一个常数,我想... – 2012-03-08 12:05:40

+0

好,如果你想要一个字符串常量,你总是可以使用'extern NSString * const MyFirstConstant;' – 2012-03-08 12:08:07

+0

引用此链接我认为这是你想要的.. http://stackoverflow.com/a/539191/919545 – 2012-03-08 12:09:15

2

%@是针对对象。 BOOL不是一个对象。
数据类型%@变化的基础如下

For Strings you use %@ 
For int you use %i 
For float you use %f 
For double you use %lf 
+0

这个问题中没有提到BOOL。 – 2015-09-08 08:29:29