オブジェクトではないため、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キャストするクラスでこれを定義します。BOOLNSString
#define NSStringFromBOOL(aBOOL) aBOOL? @"YES" : @"NO"
次に、これを単に呼び出します-
NSString *bool_string = NSStringFromBOOL(YES);
NSLog(@"%@",bool_string);
YES'1'の代わりに印刷されます。