Использование NSLog для отладки
У меня есть следующий фрагмент кода в моем Xcode:
NSString *digit [[sender titlelabel] text];
NSLog([digit]);
Я попытался создать приложение и получил следующее предупреждающее сообщение для строки NSLog([digit]);
Warning: Format not a string literal and no format arguments
Можете ли вы сообщить мне, как я могу разрешить это предупреждение? Что на самом деле означает сообщение?
Ответы
Ответ 1
Попробуйте этот фрагмент кода:
NSString *digit = [[sender titlelabel] text];
NSLog(@"%@", digit);
Сообщение означает, что у вас неправильный синтаксис для использования переменной digit
. Если вы не отправляете ему никаких сообщений - вам не нужны никакие скобки.
Ответ 2
Используйте NSLog()
следующим образом:
NSLog(@"The code runs through here!");
Или как это - с заполнителями:
float aFloat = 5.34245;
NSLog(@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat);
В NSLog()
вы можете использовать его как + (id)stringWithFormat:(NSString *)format, ...
float aFloat = 5.34245;
NSString *aString = [NSString stringWithFormat:@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat];
Вы также можете добавить другие заполнители:
float aFloat = 5.34245;
int aInteger = 3;
NSString *aString = @"A string";
NSLog(@"This is my float: %f \n\nAnd here is my integer: %i \n\nAnd finally my string: %@", aFloat, aInteger, aString);
Ответ 3
Почему у вас есть скобки вокруг digit
?
Это должно быть
NSLog("%@", digit);
Вам также не хватает =
в первой строке...
NSString *digit = [[sender titlelabel] text];
Ответ 4
NSLog(@"%@", digit);
что отображается в консоли?
Ответ 5
Правильный способ использования NSLog, как предупреждает попытка объяснить, заключается в использовании форматирования вместо того, чтобы передавать в литерале:
Вместо:
NSString *digit = [[sender titlelabel] text];
NSLog(digit);
Использование:
NSString *digit = [[sender titlelabel] text];
NSLog(@"%@",digit);
Он по-прежнему будет работать, делая первый способ, но делать это таким образом избавится от предупреждения.
Ответ 6
Тип: BOOL
ДАННЫЕ (ДА/НЕТ) ИЛИ (1/0)
BOOL dtBool = 0;
ИЛИ
BOOL dtBool = NO;
NSLog(dtBool ? @"Yes" : @"No");
ВЫХОД: НЕТ
type: Long
long aLong = 2015;
NSLog(@"Display Long: %ld", aLong);
OUTPUT: Display Long: 2015
long long veryLong = 20152015;
NSLog(@"Display very Long: %lld", veryLong);
ВЫХОД: Показать очень долго: 20152015
type: String
NSString *aString = @"A string";
NSLog(@"Display string: %@", aString);
OUTPUT: Строка отображения: строка
type: Float
float aFloat = 5.34245;
NSLog(@"Display Float: %F", aFloat);
OUTPUT: isplay Float: 5.342450
type: Integer
int aInteger = 3;
NSLog(@"Display Integer: %i", aInteger);
OUTPUT: Отображение Целое число: 3
NSLog(@"\nDisplay String: %@ \n\n Display Float: %f \n\n Display Integer: %i", aString, aFloat, aInteger);
ВЫХОД:
Строка: строка
Отображение поплавка: 5.342450
Отображение целого числа: 3
http://luterr.blogspot.sg/2015/04/example-code-nslog-console-commands-to.html