Использование NSLog для отладки - PullRequest
26 голосов
/ 30 марта 2011

У меня есть следующий фрагмент кода в моем Xcode:

NSString *digit [[sender titlelabel] text];
NSLog([digit]);

Я попытался создать приложение и получаю следующее предупреждающее сообщение для строки NSLog([digit]);

Warning: Format not a string literal and no format arguments

Можете ли вы посоветовать мне, как я могу решить это предупреждение?Что на самом деле означает сообщение?

Ответы [ 6 ]

50 голосов
/ 30 марта 2011

Попробуйте этот кусок кода:

NSString *digit = [[sender titlelabel] text];
NSLog(@"%@", digit);

Сообщение означает, что у вас неверный синтаксис для использования переменной digit. Если вы не отправляете ему никаких сообщений - вам не нужны скобки.

25 голосов
/ 30 марта 2011

Используйте 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);
5 голосов
/ 30 марта 2011

Почему у вас скобки вокруг digit?Это должно быть

NSLog("%@", digit);

Вам также не хватает = в первой строке ...

NSString *digit = [[sender titlelabel] text];

3 голосов
/ 30 марта 2011

Правильный способ использования NSLog, как пытается объяснить предупреждение, это использование форматера вместо передачи литерала:

Вместо:

NSString *digit = [[sender titlelabel] text];
NSLog(digit);

Использование:

NSString *digit = [[sender titlelabel] text];
NSLog(@"%@",digit);

Это все равно будет работать при первом способе, но при этом способ избавится от предупреждения.

3 голосов
/ 30 марта 2011
NSLog(@"%@", digit);

что отображается в консоли?

2 голосов
/ 14 апреля 2015

тип: BOOL ДАННЫЕ (ДА / НЕТ) ИЛИ (1/0)

BOOL dtBool = 0; 

OR

BOOL dtBool = NO;
NSLog(dtBool ? @"Yes" : @"No");

ВЫХОД: НЕТ

тип: Long

long aLong = 2015;
NSLog(@"Display Long: %ld”, aLong);

ВЫХОД: Отображение длинного: 2015

long long veryLong = 20152015;
NSLog(@"Display very Long: %lld", veryLong);

ВЫХОД: очень длинный дисплей: 20152015

тип: String

NSString *aString = @"A string";
NSLog(@"Display string: %@", aString);

OUTPUT: строка отображения: строка

тип: Float

float aFloat = 5.34245;
NSLog(@"Display Float: %F", aFloat);

ВЫХОД: isplay Поплавок: 5.342450

тип: целое число

int aInteger = 3;    
NSLog(@"Display Integer: %i", aInteger);

ВЫХОД: Целое число дисплея: 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...