2012-03-08 23 views
20

Tôi có một hằng chuỗi được định nghĩa như thế này:Làm thế nào để in ra chuỗi liên tục với NSLog trên iOS

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

Một nơi nào đó trong đoạn code tôi muốn in ra đoạn mã này với NSLog như thế:

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

Nhưng gặp lỗi xây dựng: Expected expression.

Tôi đã xem xét số Format Specifiers của Apple nhưng không thể tìm ra.

Ai đó có thể vui lòng giải thích cho tôi cách thực hiện việc này không?

Cảm ơn!

+1

+1 cho "This Is It" –

Trả lời

37

Bạn nên loại bỏ ; từ định nghĩa của kMyString:

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

Cách bạn đã làm nó tương đương với:

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

ah có thực sự :-) quá rõ ràng ... – TheEye

+0

Tôi đã gõ sai trong câu hỏi. Nhưng vấn đề vẫn tồn tại. –

+0

OMG. Thực ra tôi cũng đã gõ sai mã. Đã xóa dấu chấm phẩy và bây giờ nó hoạt động. Cảm ơn! –

2

Di rằng Dấu chấm phẩy sau #define và sử dụng %@ và nó sẽ làm việc .

+0

Nhưng điều đó sẽ không còn là hằng số mà tôi muốn ... –

+0

nếu bạn muốn một chuỗi liên tục, bạn luôn có thể sử dụng 'extern NSString * const MyFirstConstant;' –

+0

tham khảo liên kết này Tôi nghĩ rằng đây là những gì bạn muốn .. http://stackoverflow.com/a/539191/919545 –

2

%@ là dành cho các đối tượng. BOOL không phải là một đối tượng.
Trên cơ sở của kiểu dữ liệu %@ thay đổi như sau

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

Không có BOOL nào được đề cập trong câu hỏi này. –