オブジェクトではないため、BOOL
値を直接保存することはできません。NSDictionary
したがって、最初に変更してNSNumber
から保存してからNSDictionary
、を比較するisKindOfClass:[NSNumber Class]
代わりに比較する必要があり[BOOL class]
ます。
例:-
BOOL value = YES;
NSDictionary *dict = [[NSDictionary alloc]initWithObjectsAndKeys:[NSNumber numberWithBool:value],@"Bool", nil];
id val = [dict valueForKey:@"Bool"];
if([val isKindOfClass:[NSNumber class]])
{
//NSNumber Class
}
編集:
BOOL
値をNSString
直接キャストすることはできません。BOOL
フォーマットで価値が必要な場合NSString
は、独自のメソッドを作成する必要があります。これは、を使用したこの小さな例ですmacro
。
値をmacro
キャストするクラスでこれを定義します。BOOL
NSString
#define NSStringFromBOOL(aBOOL) aBOOL? @"YES" : @"NO"
次に、これを単に呼び出します-
NSString *bool_string = NSStringFromBOOL(YES);
NSLog(@"%@",bool_string);
YES
'1'の代わりに印刷されます。