您不能直接保存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
直接。如果你想NSString
格式的BOOL
值,你將不得不做出自己的方法。這是一個使用macro
的小例子。
定義此macro
您想要將BOOL
值投射到NSString
的哪個類。
#define NSStringFromBOOL(aBOOL) aBOOL? @"YES" : @"NO"
然後,只需調用這個 -
NSString *bool_string = NSStringFromBOOL(YES);
NSLog(@"%@",bool_string);
它將打印YES
,而不是 '1'。
現在閱讀C教程。 – 2012-10-20 10:53:35
你不能將BOOL存儲在NSDictionary中。請參閱文檔。 (當你解析一個JSON時,布爾值將被存儲爲NSIntegers 0和1.) – ilmiacs
此外,你的打印語句是不好的。 – ilmiacs