60

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

たとえば、これを試してみましたが、機能していません。

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

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

4

8 に答える 8

65

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

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

NSLog(@"Is Kind of NSString: %d", isKind);
NSLog(@"Is Kind of NSString: %@", isKind ? @"YES" : @"NO");
于 2009-04-10T19:08:00.450 に答える
63

フォーマット文字列にフォーマット指定子が必要です。

NSLog(@"Is Kind of NSString: %@", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");
于 2009-04-10T19:03:56.107 に答える
33

バックグラウンドでは、BOOL は int 型のように機能するため、 %i を使用して NSLog で 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
于 2011-02-23T02:09:14.717 に答える
23

だから、これが本当に古いことはわかっていますが、自分のソリューションをリングに投げ込んだ方がいいと思いました. そうです:

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

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

于 2011-12-13T20:49:30.297 に答える
13

次のように BOOL を出力します。

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

または、新しい@表記法を使用すると、次のことができます。

NSLog(@"The BOOL value is %@", @(theBoolValue));
于 2012-09-11T00:23:59.277 に答える
3

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

これはうまくいくはずです:

NSLog(@"Is Kind of NSString: %@", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");
于 2009-04-10T19:06:11.530 に答える
0

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

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

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

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]]));
于 2016-06-16T07:54:52.250 に答える
-1

これは私にとってはうまくいきます:

NSLog(@"The BOOL value is %@", theBoolValue ? "YES" : "NO");
于 2015-08-02T20:28:17.883 に答える