2012-03-08 116 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