60 votes

BOOL à NSString

Si ma méthode renvoie un BOOL , comment puis-je la convertir en NSString afin que je puisse l’imprimer dans la console?

Par exemple, j'ai essayé de faire cela, ce qui ne fonctionne pas:

 NSLog(@"Is Kind of NSString:", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");
 

Mais je veux vraiment transformer la valeur de retour en NSString. Je sais que c'est un type de données primitif, je ne peux donc pas appeler de méthodes dessus. Dois-je créer une chaîne séparément puis utiliser le booléen comme paramètre dans une méthode sur NSString?

65voto

Andrew Grant Points 35305

Utilisez un opérateur ternaire :

 BOOl isKind= [thing isKindOfClass:[NSString class]];

NSLog(@"Is Kind of NSString: %d", isKind);
NSLog(@"Is Kind of NSString: %@", isKind ? @"YES" : @"NO");
 

33voto

dene Points 691

En arrière-plan, BOOL agit comme un type int. Vous pouvez donc utiliser% i pour tester la valeur d'un type BOOL dans NSLog:

 BOOL a = YES;
BOOL b = NO;
NSLog(@"a is %i and b is %i", a, b);

// Output: a is 1 and b is 0
 

23voto

pcperini Points 11448

Alors, je sais que c'est vraiment vieux, mais j'ai pensé que je pourrais aussi bien de jeter ma solution sur le ring. Je fais:

#define NSStringFromBOOL(aBOOL)    aBOOL? @"YES" : @"NO"
NSLog(@"Is Kind of NSString: %@", NSStringFromBOOL([thing isKindOfClass: [NSString class]]);

J'ai l'impression que c'est plus en ligne avec certains d'Apple en chaîne de macros (NSStringFromClass, NSStringFromRect, NSStringFromSelector, et ainsi de suite), et généralement assez simple à utiliser à la volée. Assurez-vous simplement de mettre cette macro quelque part accessible à l'échelle mondiale ou, souvent importés!

13voto

Hot Licks Points 25075

Vous imprimez un BOOL comme ceci:

NSLog(@"The BOOL value is %s", theBoolValue ? "YES" : "NO");

Ou, avec le nouveau @ de la notation, on pourrait faire:

NSLog(@"The BOOL value is %@", @(theBoolValue));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X