How can I expand a macro inside NSString? I've got the following code:
#define MAX_MESSAGE_LENGTH 2000
NSString *alertTxt = @"Your message exceeded MAX_MESSAGE_LENGTH characters";
As you can predict I get "Your message exceeded MAX开发者_如何转开发_MESSAGE_LENGTH characters" instead of "Your message exceeded 2000 characters". Is there a way to get my MAX_MESSAGE_LENGTH expanded in the string?
NSStrings works like C strings. I.e. you can concatenate string constants by writing them next to each other.
/* 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";
You can use stringWithFormat:
like this:
NSString *alertTxt = [NSString stringWithFormat:@"Your message exceeded %i characters", MAX_MESSAGE_LENGTH];
This uses the same placeholders %@
, %i
, etc. as NSLog.
精彩评论