我从类型为id
的Objective C库(它的Firebase,但这并不重要)中获得了一个值。该文档声明该值将是布尔值和数值结果的NSNumber。我想根据此结果是否与布尔值相对应采取不同的操作。
我知道这是可能的,因为通过NSStringFromClass([value class]);
打印出结果类会给布尔值提供“__NSCFBoolean”,但我不确定如何正确构建比较。
答案 0 :(得分:4)
objCType
方法提供有关数据类型的信息
数字对象:
NSNumber *n = @(1.3);
NSLog(@"%s", [n objCType]); // "d" for double
NSNumber *b = @YES;
NSLog(@"%s", [b objCType]); // "c" for char
可能的值记录在 "Type Encodings" 在“Objective-C运行时编程指南”中。
由于BOOL
定义为unsigned char
,因此通过此方法报告此情况。
这意味着您无法将其与包含任何NSNumber
的{{1}}对象区分开来。
但是在“布尔”和“数字”之间进行检查就足够了:
char