iPhone: проблемы с форматированной строкой (цель C) - PullRequest
4 голосов
/ 29 июня 2009

Мне нужна помощь. Почему это не работает:

NSProcessInfo *process = [NSProcessInfo processInfo];
NSString *processName = [process processName];
int processId = [process processIdentifier];
NSString *processString = [NSString stringWithFormat:@"Process Name: @% Process ID: %f", processName, processId];
NSLog(processString);

Но это так:

NSLog(@"Process Name: %@ Process ID: %d", [[NSProcessInfo processInfo] processName], [[NSProcessInfo processInfo] processIdentifier]);

Ответы [ 3 ]

14 голосов
/ 29 июня 2009
  • %@: Вывести строковую форму объекта (включая NSString).
  • %f: вывод числа с плавающей запятой (float)
  • %d: вывести целое число (int)
  • %x: Вывести шестнадцатеричную форму числа

У вашего оригинала NSString:stringWithFormat: было две проблемы:

  1. @% должно быть %@ для вывода строки NSS.
  2. Вы используете %f вместо %d для вывода целого числа.
2 голосов
/ 29 июня 2009

Ваша строка формата неверна: processId - это int, а не float.

Используйте -Wformat, чтобы избавиться от ошибок такого рода.

0 голосов
/ 29 июня 2009

Ваш формат содержит ошибку, вы поменяли местами @ и % на [NSString stringWithFormat:]. Это будет работать для журнала, но не для создания строки, потому что формат %@ не @%.

...