• OC教程10-NSNumber具体


    NSNumber简单介绍

    NSNumber是数字的对象形式,由于在OC的数组和字典中仅仅同意存放对象,所以我们有时候须要转化

    我们普通的类型是   123 那么 NSNumber类型的是  @123,它是一个对象


    1.把int float double等类型转化为 NSNumber类型

    查看系统的API我们能够看见有例如以下的方法能够生成NSNumber类型:

    + (NSNumber *)numberWithChar:(char)value;
    + (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
    + (NSNumber *)numberWithShort:(short)value;
    + (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
    + (NSNumber *)numberWithInt:(int)value;
    + (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
    + (NSNumber *)numberWithLong:(long)value;
    + (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
    + (NSNumber *)numberWithLongLong:(long long)value;
    + (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
    + (NSNumber *)numberWithFloat:(float)value;
    + (NSNumber *)numberWithDouble:(double)value;
    + (NSNumber *)numberWithBool:(BOOL)value;
    + (NSNumber *)numberWithInteger:(NSInteger)value NS_AVAILABLE(10_5, 2_0);
    + (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0);

    使用演示样例:

            //1.把 int float double转化为相应的对象类
            
            int aa1 = 110;
            NSNumber *aa2 = @(aa1);//直接使用@符号转化
            NSNumber *aa3 = [NSNumber numberWithInt:aa1];//用法转化
            float bb1 = 13.4;
            NSNumber *bb2 = [NSNumber numberWithFloat:bb1];
            NSLog(@"aa2 = %@,bb2 = %@",aa2,bb2);


    2.把 NSNumber转化为普通数据类型

    我们能够通过NSNumber的属性和方法来获得其内部的值

    @property (readonly) char charValue;
    @property (readonly) unsigned char unsignedCharValue;
    @property (readonly) short shortValue;
    @property (readonly) unsigned short unsignedShortValue;
    @property (readonly) int intValue;
    @property (readonly) unsigned int unsignedIntValue;
    @property (readonly) long longValue;
    @property (readonly) unsigned long unsignedLongValue;
    @property (readonly) long long longLongValue;
    @property (readonly) unsigned long long unsignedLongLongValue;
    @property (readonly) float floatValue;
    @property (readonly) double doubleValue;
    @property (readonly) BOOL boolValue;
    @property (readonly) NSInteger integerValue NS_AVAILABLE(10_5, 2_0);
    @property (readonly) NSUInteger unsignedIntegerValue NS_AVAILABLE(10_5, 2_0);
    
    @property (readonly, copy) NSString *stringValue;

    使用演示样例:

       //2.获取NSNumber中的数字值
            NSNumber *cc1 = @123;
            int cc2 = [cc1 intValue];//获取整数值
            
            NSNumber *dd1 = @123.456;
            double dd2 = [dd1 doubleValue];//获取double值
            double dd3= dd1.intValue;//属性方式

    3.NSNumber之间的比較

    - (NSComparisonResult)compare:(NSNumber *)otherNumber;
    
    - (BOOL)isEqualToNumber:(NSNumber *)number;
    4.NSNumber存放到 数组 或者 字典中

            NSArray *arr = @[@1,@123,@2];
            NSNumber *num1 = arr[0];
            NSNumber *num2 = [arr objectAtIndex:1];
            
            NSDictionary *dic = @{@"key1":@1,@"key2":@2};
            NSNumber *nu1 = dic[@"key1"];
            NSNumber *nu2 = [dic objectForKey:@"key2"];







  • 相关阅读:
    由吃饺子想到的多线程情况下的数据共享问题
    关于伪静态的几个体会
    最近改造的一款可多选的日历插件,已通过兼容性测试
    对kingthy创作的Vtemplate模板引擎的使用心得
    从前辈们整理的数据库优化经验中得到的一点心得分享
    关于近期对Lucene.Net应用研究学习的总结
    对SharpICTCLAS 1.0的一点小小的修改记录
    转 Blob、DataURL、canvas、image的相互转换
    节日_100
    模板生成_100
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5253182.html
Copyright © 2020-2023  润新知