Ошибка отображения% в NSRunAlertPanel

Я разрабатываю приложение для рабочего стола, в котором я хочу показать сообщение на панели предупреждений с помощью NSRunAlertPanel. Я делаю следующие вещи:

NSString *title = @"% Test";
NSString *message = @"% Test Message";
NSRunAlertPanel(title, message, @"Ok" ,@"Cancel" ,nil);

Панель предупреждений показывает заголовок правильно. т.е.% Test Но сообщение является est Message; Я хочу отобразить% Test Message.

Как мне решить эту проблему?

Заранее спасибо.

1 ответ

Попробуй это:

NSString *title = @"% Test";
NSString *message = @"%% Test Message";
NSRunAlertPanel(title, message, @"Ok" ,@"Cancel" ,nil);

Зачем?

NSRunAlertPanel использования NSBeginAlertSheet, Глядя на документацию по NSBeginAlertSheet, вы можете увидеть, что после msg есть больше параметров (определяемых ...).

Это говорит нам о том, что заголовок - это просто строка, отображаемая буквально, но сообщение может иметь параметры формата так же, как [NSString stringWithFormat:] делает.

Способ, которым строка определяет наличие параметра, заключается в использовании символа%, то есть% i означает "поставить целое число здесь",% @ означает "поместить описание объекта здесь". Вы только что положили%, что очень запутывает!

Двойной %% означает, что этот процент не я говорю вам, что я хочу, чтобы вы добавили туда что-то особенное, я просто хочу%, пожалуйста.

Другие вопросы по тегам