NSNumber和NSValue

本文详细介绍了NSNumber与NSValue在Objective-C中的作用及使用方法,包括如何将基本数据类型转换为NSNumber对象,以及如何将结构体转换为NSValue对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在进行数据处理的时候,因为对象类型的不同, 并不能进行相应的数据处理,所以必须要进行数据类型的转换,这也就是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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值