BOOL à NSSsortingng

Si j’ai une méthode qui retourne un BOOL , comment puis-je le NSSsortingng en NSSsortingng pour pouvoir l’imprimer dans la console?

Par exemple, j’ai essayé de le faire, ce qui ne fonctionne pas:

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

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

Vous avez besoin d’un spécificateur de formatage dans votre chaîne de format:

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

Utilisez un opérateur ternaire :

 BOOl isKind= [thing isKindOfClass:[NSSsortingng class]]; NSLog(@"Is Kind of NSSsortingng: %d", isKind); NSLog(@"Is Kind of NSSsortingng: %@", isKind ? @"YES" : @"NO"); 

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 

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

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

Je pense que cela correspond davantage à certaines macros à cordes d’Apple ( NSSsortingngFromClass , NSSsortingngFromRect , NSSsortingngFromSelector , etc.), et généralement assez simples à utiliser à la volée. Veillez simplement à placer cette macro quelque part dans le monde, accessible à tous ou fréquemment imscope!

Vous imprimez un BOOL comme ceci:

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

Ou, avec la nouvelle notation @ , on pourrait faire:

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

NSLog utilise un simple format d’invocation de style printf son texte, et la séquence de caractères nécessaire pour incorporer un object manque à votre exemple de code.

Cela devrait fonctionner:

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

Tout d’abord, vous devez append un spécificateur de formatage %@ . Ça devrait ressembler à ça:

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

Vous pouvez également extraire une conversion de BOOL à NSSsortingng avec une fonction externe, comme Apple l’a fait avec NSSsortingngFromCGRect , NSSsortingngFromClass etc.

Créez le fichier utils ou ajoutez aux en-têtes existants le code suivant:

 //NSSsortingng+TypeConversion.h extern NSSsortingng *NSSsortingngFromBOOL(BOOL aBool); 

Et ajoutez également le code suivant dans la mise en œuvre:

 //NSSsortingng+TypeConversion.m NSSsortingng *NSSsortingngFromBOOL(BOOL aBool) { return aBool ? @"YES" : @"NO"; } 

Alors maintenant, vous pouvez utiliser cette fonction ailleurs et votre code devient plus clair et réutilisable:

 #import "NSSsortingng+TypesConversion.h" NSLog(@"Is Kind of NSSsortingng: %@", NSSsortingngFromBOOL([thing isKindOfClass:[NSSsortingng class]])); 

C’est du travail pour moi:

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