Как я могу развернуть макрос внутри NSString?У меня есть следующий код:
#define MAX_MESSAGE_LENGTH 2000 NSString *alertTxt = @"Your message exceeded MAX_MESSAGE_LENGTH characters";
Как вы можете предсказать, я получаю «Ваше сообщение превысило символы MAX_MESSAGE_LENGTH» вместо «Ваше сообщение превысило 2000 символов».Есть ли способ расширить мой MAX_MESSAGE_LENGTH в строке?
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";
Вы можете использовать stringWithFormat: так:
stringWithFormat:
NSString *alertTxt = [NSString stringWithFormat:@"Your message exceeded %i characters", MAX_MESSAGE_LENGTH];
При этом используются те же заполнители %@, %i и т. Д., Что и в NSLog.
%@
%i