由于Objective-C中常用的数据容器,如NSArray,NSDictionary等,只能处理Objective-C中的对象级别的数据类型,对于C中的很多数据类型,如int,float等,无法直接处理,针对这个问题,Objective-C提供了两种存储数据的对象NSNumber和NSValue,能将C中的基本数据类型,包括数值型和结构体型的数据转化成Objective-C可以处理的对象。
NSNumber和NSValue都能将C中的基本数据类型转化成Objective-C中的对象。
1、基本数据类型和NSValue
1)基本数据类型转化成NSValue
NSValue *value = [NSValue valueWithBytes:&result objCType:@encode(int)];
其中,result是基本数据的值,int是我们要转化的基本数据类型
2)NSValue转化成基本数据类型
[value getValue:&result];
其中,value是一个NSValue类型的对象,result是一个已知的类型的基本数据类型。经过这样的转化,NSValue中保存的数值就放到了result中了。
2、基本数据类型和NSNumber
1)基本数据类型转化成NSNumber
NSNumber *number = [NSNumber numberWithInt:3];
2)NSNumber转化成基本数据类型
NSInteger result = [number integerValue];