web-dev-qa-db-ja.com

NSStringへのBOOL

BOOLを返すメソッドがある場合、それをNSStringにキャストしてコンソールに出力するにはどうすればよいですか?

たとえば、私はこれを試しましたが、うまくいきません:

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

しかし、実際に戻り値をNSStringに変換したいのです。プリミティブデータ型であるため、メソッドを呼び出すことはできません。文字列を個別に作成してから、NSStringのメソッドのパラメーターとしてBoolを使用する必要がありますか?

59
Craig

書式文字列には書式指定子が必要です。

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

三項演算子 を使用します。

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

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

バックグラウンドで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
33
extra vertex

だから、これは本当に古いことを知っていますが、私は自分の解決策をリングに投げ込むこともできると思いました。私がやります:

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

これは、Appleのto-stringマクロ(NSStringFromClassNSStringFromRectNSStringFromSelectorなど)のいくつかとより一致しており、一般的に使用するのはかなり簡単だと思います-ザ・フライ。そのマクロをグローバルにアクセスできる場所、または頻繁にインポートする場所に配置してください。

22
Patrick Perini

次のようなBOOLを印刷します。

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

または、新しい@表記、次のようにできます。

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

NSLogは、シンプルなprintfスタイルの呼び出し形式のテキストを使用します。コード例には、オブジェクトの埋め込みに必要な文字シーケンスがありません。

これは動作するはずです:

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

まず、書式指定子%@を追加する必要があります。次のようになります。

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

また、extern関数を使用してBOOLからNSStringへの変換をAppleがNSStringFromCGRectNSStringFromClassなどで行ったように)抽出することもできます。 。

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]]));
0
HammerSlavik