如何在NSString中扩展宏?我有以下代码:
#define MAX_MESSAGE_LENGTH 2000
NSString *alertTxt = @"Your message exceeded MAX_MESSAGE_LENGTH characters";
正如您可以预测的那样,“我的消息超出了MAX_MESSAGE_LENGTH个字符”,而不是“您的消息超过了2000个字符”。 有没有办法让我的MAX_MESSAGE_LENGTH在字符串中扩展?
答案 0 :(得分:8)
NSStrings就像C字符串一样工作。即你可以通过将它们彼此相邻来连接字符串常量。
/* nested macro to get the value of the macro, not the macro name */
#define MACRO_VALUE_TO_STRING_( m ) #m
#define MACRO_VALUE_TO_STRING( m ) MACRO_VALUE_TO_STRING_( m )
#define MAX_MESSAGE_LENGTH 2000
NSString *alertTxt = @"Your message exceeded "
MACRO_VALUE_TO_STRING(MAX_MESSAGE_LENGTH)
" characters";
答案 1 :(得分:1)
您可以像这样使用stringWithFormat:
:
NSString *alertTxt = [NSString stringWithFormat:@"Your message exceeded %i characters", MAX_MESSAGE_LENGTH];
它使用相同的占位符%@
,%i
等作为NSLog。