BOOL
を返すメソッドがある場合、それをNSString
にキャストしてコンソールに出力するにはどうすればよいですか?
たとえば、私はこれを試しましたが、うまくいきません:
NSLog(@"Is Kind of NSString:", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");
しかし、実際に戻り値をNSStringに変換したいのです。プリミティブデータ型であるため、メソッドを呼び出すことはできません。文字列を個別に作成してから、NSStringのメソッドのパラメーターとしてBoolを使用する必要がありますか?
書式文字列には書式指定子が必要です。
NSLog(@"Is Kind of NSString: %@", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");
三項演算子 を使用します。
BOOl isKind= [thing isKindOfClass:[NSString class]];
NSLog(@"Is Kind of NSString: %d", isKind);
NSLog(@"Is Kind of NSString: %@", isKind ? @"YES" : @"NO");
バックグラウンドでBOOLはint型のように機能するため、NSLogで%iを使用してBOOL型の値をテストできます。
BOOL a = YES;
BOOL b = NO;
NSLog(@"a is %i and b is %i", a, b);
// Output: a is 1 and b is 0
だから、これは本当に古いことを知っていますが、私は自分の解決策をリングに投げ込むこともできると思いました。私がやります:
#define NSStringFromBOOL(aBOOL) ((aBOOL) ? @"YES" : @"NO")
NSLog(@"Is Kind of NSString: %@", NSStringFromBOOL([thing isKindOfClass: [NSString class]]);
これは、Appleのto-stringマクロ(NSStringFromClass
、NSStringFromRect
、NSStringFromSelector
など)のいくつかとより一致しており、一般的に使用するのはかなり簡単だと思います-ザ・フライ。そのマクロをグローバルにアクセスできる場所、または頻繁にインポートする場所に配置してください。
次のようなBOOLを印刷します。
NSLog(@"The BOOL value is %s", theBoolValue ? "YES" : "NO");
または、新しい@
表記、次のようにできます。
NSLog(@"The BOOL value is %@", @(theBoolValue));
NSLogは、シンプルなprintfスタイルの呼び出し形式のテキストを使用します。コード例には、オブジェクトの埋め込みに必要な文字シーケンスがありません。
これは動作するはずです:
NSLog(@"Is Kind of NSString: %@", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");
まず、書式指定子%@
を追加する必要があります。次のようになります。
NSLog(@"Is Kind of NSString: %@", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");
また、extern関数を使用してBOOL
からNSString
への変換をAppleがNSStringFromCGRect
、NSStringFromClass
などで行ったように)抽出することもできます。 。
Utilsファイルを作成するか、既存のヘッダーに次のコードを追加します。
//NSString+TypeConversion.h
extern NSString *NSStringFromBOOL(BOOL aBool);
また、実装に次のコードを追加します。
//NSString+TypeConversion.m
NSString *NSStringFromBOOL(BOOL aBool)
{
return aBool ? @"YES" : @"NO";
}
これで、この関数を他の場所で使用でき、コードがより明確で再利用可能になります。
#import "NSString+TypesConversion.h"
NSLog(@"Is Kind of NSString: %@", NSStringFromBOOL([thing isKindOfClass:[NSString class]]));