一 概述
1 2 3 4
| @{ @"name":@"jack", @"age":10 };
|
我们上节使用@{}
来表示dictionary,但是"@age:10"却会出现错误,因为不能使用基本数据类型(10),需要将基本数据类型包装成对象,这就用到了本课中的NSNumber
二 NSNumber
2.1 NSNumber说明
NSNumber类能够通过一种基本数据类型生成NSNumber对象,并依据此对象获取其他基本数据类型,甚至包括了字符与字符串的转换
2.2 使用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| NSNumber *num=[NSNumber numberWithInt:10]; NSDictionary *dict= @{ @"name":@"jack", @"age":num }; NSNumber *num2=dict[@"age"]; NSLog(@"num2==%d",num2.intValue); //double NSNumber *n=[NSNumber numberWithDouble:10.5]; double d=[n doubleValue]; NSLog(@"d=%f",d); //NSString NSString *str=[NSString stringWithFormat:@"%d",20]; NSLog(@"str==%d",str.intValue); //包装类型 NSArray *array= @[ @{@"name":@"jack",@"age":@20}, @{@"name":@"rose",@"age":@25}, @{@"name":@"jim",@"age":@27} ]; @10.5; @YES; @'A'; @"A"; int age=20; @(age);
|
三 NSValue
3.1 说明
- NSNumber是NSValue的子类, 但NSNumber只能包装数字类型
- NSValue可以包装任意值
- 因此, 可以用NSValue将结构体包装后,加入NSArray\NSDictionary中
3.2 示例
1 2 3 4 5
| CGPoint p=CGPointMake(10, 10); NSValue *value= [NSValue valueWithPoint:p]; NSArray *array=@[value]; CGPoint point =[value pointValue];
|