NSNumber类
NSNumber类,可以将普通数据类型变成一个对象
由于NSNumber类包含许多数据类型的封装,所以也是一个类簇。具体实现:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSNumber *intA=[[NSNumber alloc]initWithInt:5];
NSNumber *floatB=[[NSNumber alloc]initWithFloat:5.5f];
NSNumber *doubleC=[[NSNumber alloc]initWithDouble:6.7];
NSNumber *charD=[[NSNumber alloc]initWithChar:'D'];
NSLog(@"%@",intA);
NSLog(@"%@",floatB);
NSLog(@"%@",doubleC);
NSLog(@"%@",charD);
}
return 0;
}
将数据封装成为对象后,我们就可以向对象发送消息了
比较两个数据的大小
NSNumber *intA=[[NSNumber alloc]initWithInt:5];
NSNumber *intNumber=[[NSNumber alloc]initWithInt:6];
BOOL ret=[intA isEqualToNumber:intNumber];
NSLog(@"%d",ret);
我们用BOOL类型来查看比较结果,返回值为0或1
用这个方法我们甚至可以比较不同数据类型的数之间的大小
NSNumber *intA=[[NSNumber alloc]initWithInt:5];
NSNumber *floatB=[[NSNumber alloc]initWithFloat:5.5f];
BOOL ret2=[floatB isEqualToNumber:intA];
NSLog(@"%d",ret2);
我们还可以用”comper”这个方法来比较两个数的大小,这个方法返回值为-1,0,1,包含在NSComparison这个枚举类中,这个类的原型为
enum -NSComparisonResult{NSOrdered Ascending=-1,NSOrderedSame,NSOrderedDescending};
所以用这个方法实现两个类的比较核心代码为:
if([intA compare:intNumber]==NSOrderedAscending)
NSLog(@"<");
if([intA compare:intNumber]==NSOrderedSame)
NSLog(@"=");
if([intA compare:intNumber]==NSOrderedDescending)
NSLog(@">");
我们在将数据封装成一个对象后还可以通过方法”数据类型+Value”将数据还原
int a=[intA intValue];
float b=[floatB floatValue];
double c=[doubleC doubleValue];
char d=[charD charValue];
NSLog(@"%d",a);
NSLog(@"%f",b);
NSLog(@"%f",c);
NSLog(@"%c",d);