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"];

最新文章

  1. NoSQl简介(转)
  2. VS 远程发布IIS
  3. 编程之linux与win区别
  4. Linux文件保护禁止修改、删除、移动文件等,使用chattr +i保护
  5. MySQL源码 数据结构array
  6. 基于visual Studio2013解决面试题之1307二分查找
  7. BUG--tomcat更改目录失败
  8. QT | 一些学习心得
  9. go 0000
  10. callback源码分析——callbacks
  11. js对键盘输入事件绑定到特定按钮
  12. win10编译caffe跑faster-rcnn(cuda7.5)
  13. 第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解
  14. jconsole工具使用----jvm内存泄漏问题
  15. ListView高效分页
  16. day6 SYS模块
  17. java8新增的日期时间包
  18. 公式中表达单个双引号【"】和空值【""】的方法及说明
  19. xshell下载安装
  20. levelDB, TokuDB, BDB等kv存储引擎性能对比——wiredtree, wiredLSM,LMDB读写很强啊

热门文章

  1. C# 泛型多种参数类型与多重约束 示例
  2. zabbix监控应用连接数
  3. <a>标签中href="javascript:;"
  4. IIS7的安装详解
  5. 内容提供者 ContentResolver 数据库 示例 -1
  6. 在MVC中如何愉快使用Ajax
  7. Swift 数组、字典
  8. java日期操作
  9. Servlet 技术全总结 (已完成,不定期增加内容)
  10. uva12489 Combating cancer(树同构)