我没有得到布尔类型?
这是我的代码,我做错了什么?
id val = [ dict objectForKey:key ];
if ([ val isKindOfClass:[ NSString class ] ] )
print "string";
else if( [ val isKindOfClass:[ NSNumber class ] ] )
print "number";
else if( [ val isKindOfClass:[ BOOL class ] ] )
print "bool";
没有得到布尔类型。
答案 0 :(得分:1)
您无法直接在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'。
答案 1 :(得分:0)
BOOL
不是类,也不是Objective-C对象类型。它是一个标量,由C基元类型(signed char
)定义。你不能这样使用它。