在进行数据处理的时候,因为对象类型的不同, 并不能进行相应的数据处理,所以必须要进行数据类型的转换,这也就是NSNumber,NSValue这两类值对象出现的原因。

简而言之,NSNumber就是实现基本数据类型与对象类型的互相转换,而NSValue,则是实现结构体对象与对象类型的互相转换。

NSNumber因为是实现基本数据类型与对象类型的互相转换,所以,必须是要有数据类型,而int ,char,BOOL,Float,Long,Integer等等等~都可以进行相应的转换

//1.将基本数据类型转换为NSNumber *类型的对象

int number = 10;

NSNumber *num = [NSNumber numberWithInt:number];

//2.将NSNumber *类型的对象还原成基本数据类型

int result = [num intValue];

其它的类型使用方法也是相同的方法,比如BOOL

BOOL isYes = YES;

NSNumber *isY = [NSNumber numberWithBool:isYes];

NSValue也是同样的道理

//1.将结构体转换成值对象

NSRange range = {5,8};

NSValue *value = [NSValue valueWithRange:range];

/2.将对象转换成原有的结构体

NSRange newRange = [value rangeValue];

//结构不能直接打印,用NSStringFromRange结构体转换成字符串打出来

NSLog(@"%@",NSStringFromRange(newRange));

注意:当然这只是单纯的介绍一样方法的使用,在做项目或者是做一些数据处理,类型转换时还需要注意当时的形式来使用。比如NSNumber可以实现大小的比较,并不是像字符串那样逐字逐的比较。

NSNumber *number1 = [NSNumber numberWithInt:17];

NSNumber *number2 = [NSNumber numberWithInt:123];

NSComparisonResult numberReslu = [number1 compare:number2];

NSLog(@"numberResult is %ld",numberReslu);//最后比较的结果是 - 1,而不是1,如果是字符串比较的话则是1.

Objective - C 值对象 NSNumber和NSValue的更多相关文章

  1. Objective-C( Foundation框架 一 NSNumber(NSValue))

    NSNumber: 是OC中处理数字的一个类 NSValue是NSNumber的子类 如何处理: 把int,float,double  包装成一个对象 使用NSNumber的好处: 可以把基本数据类型 ...

  2. iOS Foundation框架 -3.利用NSNumber和NSValue将非OC对象类型数据存放到集合

    1.Foundation框架中提供了很多的集合类如:NSArray,NSMutableArray,NSSet,NSMutableSet,NSDictionary,NSMutableDictionary ...

  3. NSNumber和NSValue

    在进行数据处理的时候,因为对象类型的不同, 并不能进行相应的数据处理,所以必须要进行数据类型的转换,这也就是NSNumber,NSValue这两类值对象出现的原因. 简而言之,NSNumber就是实现 ...

  4. NSNumber、NSValue、NSDate、NSObject

    注:OC中数组和字典只能存储OC对象不能存放基本数据类型. NSNumber NSNumber可以用来把一个基本数据类型包装成一个NSNumber类型的对象. NSNumber *number = [ ...

  5. 02-Foundation-NSMutableString、NSNumber、NSValue、NSDate、NSArray

    目录: 一.NSMutableString可变字符串 二.NSNumber数字对象 三.NSValue 四.NSDate日期对象 五.NSArray数组对象 回到顶部 一.NSMutableStrin ...

  6. OC中常见的结构体,以及NSNumber、NSValue、NSDate的使用

    常见的结构体 NSPoint和CGPoint NSSize和CGSize NSRect 和 CGRect NSPoint和CGPoint的使用 NSPoint和CGPoint是同义的 typedef ...

  7. NSNumber 和 NSValue 的部分使用

    1.NSNumber 在Objective-c中有int,float,char等基本数据类型,但这些基本数据类型并不是对象,而数组,字典,字符串等容器中存放的都是对象类型,因此我们需要用到NSNumb ...

  8. OC NSNumber和NSValue和NSDate和NSData

    一 NSNumber // // main.m // 07-NSNumber // // Created by apple on 13-8-12. // Copyright (c) 2013年 itc ...

  9. NSNumber 与NSValue

    NSNumber与NSValue关系与作用 .由于集合里只能存放对象,不可以存放基本数据类型,所以我们有时候需要讲一些对象比如基本数据类型,结构体等存到NSDictionary NSArray中,我们 ...

随机推荐

  1. javascript 利用匿名函数对象给你异步回调方法传参数

    先来创建一个匿名函数对象: /*** * 匿名函数 */ var callChangeBtn=new function(bugBtn){ this.chage=function(json){ bugB ...

  2. 【linux】 解决linux下vsftp 500 OOPS: cannot change directory:/home/ftp/ 办法

    用FileZilla连接ftp出现错误,500 OOPS: cannot change directory:/home/ftp 原因是CentOS系统安装了SELinux,因为默认下是没有开启FTP的 ...

  3. U盘装系统

    http://jingyan.baidu.com/article/fec4bce20e344cf2618d8b37.html

  4. _IntfClear报错问题

    delphi对象在释放时会清除对象相关接口.如果开发人员在这之前已经将接口对应的对象释放掉,那么当清除到该接口时经常会报访问内存错误,如下图

  5. Ubuntu 16.04中安装Chromium浏览器

    引用:http://www.linuxidc.com/Linux/2016-05/131097.htm 通过ppa,安装最新版本的Chromium浏览器 sudo add-apt-repository ...

  6. 扩展Redis的Lua调用方式

    Redis是支持Lua脚本的,但是我以为并不方便. 1. SCRIPT LOAD一个字符串拿到一个SHA,首先这个Lua script脚本就很难拿到.Linux一般用cat什么的.但是你作为PHP怎么 ...

  7. 报错:org.hibernate.AssertionFailure: null id in com.tt.hibernate.entities.News entry (don't flush the Session after an exception occurs)

    在使用hibernate创建数据库的表格时,出现了如下报错: 十二月 28, 2016 10:17:02 上午 org.hibernate.tool.hbm2ddl.SchemaExport perf ...

  8. Net操作Excel(终极方法NPOI)

    NPOI 待学习 http://www.cnblogs.com/stone_w/archive/2012/08/02/2620528.html

  9. Win+R命令大全

    explorer---------------------打开资源管理器logoff------------------------注销命令lusrmgr.msc----------------本机用 ...

  10. 关于a标签点击会出现的背景色的问题

    同事今天在tap里面有a标签,并且给a标签块化之后,点击tap切换时会出现背景色,解决方案: body { margin: 0 auto; max-width:100%; background: #f ...