美文网首页
iOS获取NSNumber的原始类型(*BOOL)

iOS获取NSNumber的原始类型(*BOOL)

作者: Sunny森然 | 来源:发表于2022-11-03 16:10 被阅读0次
    需求:

    将NSDictionary中的bool类型用字符串"true" | "false" 的形式表示

    众所周知, 当bool类型被转成NSNumber的时候会以01的形式存储, 所以在不知道类型的情况下, 是无法分辨到底是数字类型还是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;
    }
    

    相关文章

      网友评论

          本文标题:iOS获取NSNumber的原始类型(*BOOL)

          本文链接:https://www.haomeiwen.com/subject/vlretdtx.html