Utilisation de NSLog pour le débogage

j'ai le code suivant dans mon Xcode:

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

j'ai essayé de construire l'application et reçois le message d'avertissement suivant pour la ligne NSLog([digit]);

Warning: Format not a string literal and no format arguments

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

24
demandé sur DavidPostill 2011-03-30 16:31:20
la source

6 ответов

Essayez ce morceau de code:

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

le message signifie que vous avez une syntaxe incorrecte pour utiliser le digit variable. Si vous ne lui envoyez pas de message - vous n'avez pas besoin de crochets.

50
répondu Eimantas 2011-03-30 16:34:37
la source

Utiliser NSLog() comme ceci:

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

Ou comme celle - ci, avec des espaces réservés:

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

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 ajouter d'autres espaces réservés, trop:

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);
24
répondu Fabio Poloni 2011-03-30 16:38:34
la source

Pourquoi avez-vous les crochets autour de l' digit? Il devrait être

NSLog("%@", digit);

Vous êtes également en manque un = dans la première ligne...

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

4
répondu GoatInTheMachine 2011-03-30 16:34:29
la source
NSLog(@"%@", digit);

ce qui est affiché dans la console?

3
répondu 0xDE4E15B 2011-03-30 16:34:56
la source

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

au Lieu de:

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

Utilisation:

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

Il faudra encore du travail à faire que la première, mais cette façon de se débarrasser de l'avertissement.

3
répondu Wayne Hartman 2011-03-30 16:35:24
la source

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

BOOL dtBool = 0; 

OR

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

SORTIE: NO

type : Longues

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

sortie : Display Long: 2015

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

sortie : Display très Long: 20152015

type : Chaîne de caractères

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

SORTIE : Affichage de la Chaîne: une Chaîne de caractères

type : Float

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

SORTIE : afficher 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 de caractères

Affichage Float: 5.342450

Affichage Entier: 3

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

2
répondu Luter Rinding 2015-04-14 08:33:21
la source

Autres questions sur