Подтвердить что ты не робот

Использование NSLog для отладки

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

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

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

Warning: Format not a string literal and no format arguments

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

4b9b3361

Ответ 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