1.NSNumber基本概念
-
NSArray\NSDictionary中只能存放OC对象,不能存放int\float\double等基本数据类
-
如果真想把基本数据(比如int)放进数组或字典中,需要先将基本数据类型包装成OC对象
- NSNumber可以将基本数据类型包装成对象,这样就可以间接将基本数据类型存进NSArray\NSDictionary中
2.NSNumber的创建
- 以前
+ (NSNumber *)numberWithInt:(int)value; + (NSNumber *)numberWithDouble:(double)value; + (NSNumber *)numberWithBool:(BOOL)value;
- 现在
@10; @10.5; @YES; @(num);
3.从NSNumber对象中的到基本类型数据
- (char)charValue; - (int)intValue; - (long)longValue; - (double)doubleValue; - (BOOL)boolValue; - (NSString *)stringValue; - (NSComparisonResult)compare:(NSNumber *)otherNumber; - (BOOL)isEqualToNumber:(NSNumber *)number;
// main.m // NSNumber #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { int age = 10; double number= 5.1; int value = 6; // NSArray *arr = @[age, number, value]; // 1.将基本数据类型转换为对象类型 NSNumber *ageN = [NSNumber numberWithInt:age]; NSNumber *numberN = [NSNumber numberWithDouble:number]; NSNumber *valueN = [NSNumber numberWithInt:value]; NSArray *arr = @[ageN, numberN, valueN]; NSLog(@"arr = %@", arr); // 2.将对象类型转换为基本数据类型 // int temp = [ageN intValue]; // double temp = [numberN doubleValue]; // NSLog(@"%f", temp); // 3.基本数据类型转换对象类型简写 // 注意: 如果传入的是变量那么必须在@后面写上(), 如果传入的常量, 那么@后面的()可以省略 // NSNumber *temp = @(number); NSNumber *temp =@10.10; NSLog(@"%@", temp); return 0; }