需求:
将NSDictionary中的bool类型用字符串"true" | "false" 的形式表示
众所周知, 当
bool
类型被转成NSNumber
的时候会以0
和1
的形式存储, 所以在不知道类型的情况下, 是无法分辨到底是数字类型还是bool
类型的
- 判断bool类型, 为NSNumber写以下扩展来输出结果
#import "NSNumber+Helper.h"
@implementation NSNumber (Helper)
- (bool)isBool {
return [self isKindOfClass:NSClassFromString(@"__NSCFBoolean")];
}
- (NSString *)toString {
if ([self isBool]) {
return [self boolValue] ? @"true": @"false";
}
return [NSString stringWithFormat:@"%@",self];
}
以上我的需求就OK了
- 如果还想要判断其中数字类型
int
等可使用以下代码
- (int)numberOriginType:(NSNumber *)number {
int type = -1;
if (strcmp([number objCType], @encode(int)) == 0) {
type = 1;
} else if (strcmp([number objCType], @encode(double)) == 0) {
type = 2;
} else if (strcmp([number objCType], @encode(float)) == 0) {
type = 3;
} else if (strcmp([number objCType], @encode(long)) == 0) {
type = 4;
}
return type;
}