web-dev-qa-db-fra.com

Utilisation de NSLog pour le débogage

J'ai l'extrait de code suivant dans mon Xcode:

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

J'ai essayé de créer l'application et j'obtiens le message d'avertissement suivant pour la ligne NSLog([digit]);

Warning: Format not a string literal and no format arguments

Pouvez-vous me dire comment résoudre ce message d'avertissement? Que signifie réellement le message?

26
Zhen

Essayez ce morceau de code:

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

Le message signifie que vous avez une syntaxe incorrecte pour utiliser la variable digit. Si vous ne lui envoyez aucun message, vous n'avez pas besoin de parenthèses.

50
Eimantas

Utilisez NSLog() comme ceci:

NSLog(@"The code runs through here!");

Ou comme ça - avec des espaces réservés:

float aFloat = 5.34245;
NSLog(@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat);

Dans NSLog() vous pouvez l'utiliser comme + (id)stringWithFormat:(NSString *)format, ...

float aFloat = 5.34245;
NSString *aString = [NSString stringWithFormat:@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat];

Vous pouvez également ajouter d'autres espaces réservés:

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);
25
Fabio Poloni

Pourquoi avez-vous des crochets autour de digit? CA devrait etre

NSLog("%@", digit);

Vous manquez également un = en première ligne ...

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

5
GoatInTheMachine
NSLog(@"%@", digit);

qu'est-ce qui est affiché dans la console?

3
0xDE4E15B

La bonne façon d'utiliser NSLog, comme l'avertissement essaie d'expliquer, est d'utiliser un formateur, au lieu de passer un littéral:

Au lieu de:

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

Utilisation:

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

Cela fonctionnera toujours de cette façon, mais le faire de cette façon supprimera l'avertissement.

3
Wayne Hartman

type: DONNÉES BOOL (OUI/NON) OU (1/0)

BOOL dtBool = 0; 

OR

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

SORTIE: NON

type: Long

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

SORTIE: Affichage long: 2015

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

SORTIE: Affichage très long: 20152015

type: String

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

SORTIE: Afficher la chaîne: une chaîne

type: Flotteur

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

SORTIE: isplay Float: 5.342450

type: Entier

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

SORTIE: Affichage entier: 3

NSLog(@"\nDisplay String: %@ \n\n Display Float: %f \n\n Display Integer: %i", aString, aFloat, aInteger);

SORTIE: chaîne: une chaîne

Afficher le flotteur: 5.342450

Afficher l'entier: 3

http://luterr.blogspot.sg/2015/04/example-code-nslog-console-commands-to.html

2
Luter Rinding