假如你能够很轻松的理解NSString的定义和用法,那么NSNumber的话联想一下你就大概能够明白其中的道理和关系了。
首先你必须知道C语言的基础数据类型在OC中不是所有地方都支持使用,那么碰到例如copy等不支持使用的情况,我们就必须用OC的基本数据类型了。
那么OC的基本数据类型是什么?其实它就是将C语言的数据类型全部打包封装到了一个类里面。这个类里面各种各样的C语言基础数据类型都有,例如int,float,double等
当然OC里NSNumber的功能相对要强大很多,它不仅仅包含了C的基本数据类型,里面还实现了比较大小,比较时候相等一些较为常用的方法。
这些都是方便大家理解写的一些自己的观点,具体例子看下面的文章总结出来的东西。
1、NSNumber:专门用来装基础类型的对象,把整型、单精度、双精度、字符型等基础类型存储为对象
1 //基本数据类型 2 //专门用来装基础类型的对象 3 NSNumber * intNumber = [[NSNumber alloc] initWithInt:5]; 4 NSNumber * floatNumber = [[NSNumber alloc] initWithFloat:3.14f]; 5 NSNumber * doubleNumber = [[NSNumber alloc] initWithDouble:6.7]; 6 NSNumber * charNumber = [[NSNumber alloc] initWithChar:‘A‘];
NSNumber是一个类簇,表面来看水一个类,实际上可以创建各种类的对象
1 NSNumber * intNumber2 = [NSNumber numberWithInt:6];
判断两个NSNumber是否相等
1 BOOL ret = [intNumber isEqualToNumber:intNumber2]; //这种比较也是可以跨不同对象的,比如:比较intNumber和floatNumber
比较两个整型的NSNumber的大小
1 //比较两个整型的NSNumber的大小 2 if ([intNumber compare:intNumber] == NSOrderedAscending) { 3 NSLog(@"<"); 4 }else if([intNumber compare:intNumber2] == NSOrderedSame){ 5 NSLog(@"="); 6 }else if([intNumber compare:intNumber2] == NSOrderedDescending){ 7 NSLog(@">"); 8 }
通过以下方法可以还原这些基本数据类型的数据
1 //通过以下方法可以还原这些基本数据类型的数据 2 NSLog(@"%d", [intNumber intValue]); 3 NSLog(@"%f", [floatNumber floatValue]); 4 NSLog(@"%f", [doubleNumber doubleValue]); 5 NSLog(@"%c", [charNumber charValue]);
时间: 2024-10-11 20:04:49