OC学习笔记 集合 NSnumber NSvalue NSDate
//集合只能盛放对象 对于基本数据类型封装需要用NSnumber来转换 NSNumber *number = [NSNumber numberWithInt:2]; NSMutableDictionary *dic = @{ @"name": @"dajie", @"age" : @"28", @"son":number }; NSNumber *num = dic[@"son"]; //相当于[dic objectForKey:@"son"]; int son = [num intValue];// NSLog(@"%@%@ son=%d",dic,num,son);
NSnumber 可以将基本数据类型包装起来,形成一个对象,这样就可以给其发送消息,装入NSArray中等等。
NSNumber *numDouble = [NSNumber numberWithDouble:1.2];//将一个浮点型数据通过NSnumber包装成一个对象 double age = [numDouble doubleValue];//通过NSValue 函数将一个对象转化成一个基本数据类型 NSLog(@"%.2f",age);
字符串转换成整数
NSLog(@"%d",[@"209" intValue]);
编译器新特性
@1.2;
@YES;
@26;
@'A';
@"A";
字典型数组整型对象转换
NSDictionary *dic = @[ @{@"name" : @"dajie",@"age" :@"28"},// age value为字符串对象 @{@"name" : @"dajie",@"age" :[NSNumber numberWithInt:27]},// age value为NSNumber对象
@{@"name" : @"dajie",@"age": @26}//编译器新特性@26相当于[NSNumber numberWithInt:26]
];
NSLog(@"%@",dic);
NSArray *arrays = @[ @{@"name":@"jack",@"age":@28,@"sex":@YES,@"height":@1.76,@"weight":@66}, @{@"name":@"lili",@"age":@21,@"sex":@NO,@"height":@1.66,@"weight":@46}, @{@"name":@"dajie",@"age":@28,@"sex":@YES,@"height":@1.72,@"weight":@76} ]; for (id obj in arrays) { NSLog(@" %@ ",obj); }
变量转换为对象
//将age变量包装成NSNumber对象 int *age = 80; @(age);
NSLog(@"%d",[@(ages) intValue]);
NSValue (NSNumber之所以能包装对象是因为他继承自NSValue)
NSValue能包装任何东西
NSNumber只能包装基本数据类型(数字之类)
适用范围:做动画时候用到的位置尺寸旋转等 需要结构体等相互转换
1 CGPoint p = CGPointMake(10, 10);//任意定义一个结构体 2 //结构体 转换为- >OC对象 3 NSValue *value = [NSValue valueWithPoint:p]; 4 NSArray *arry = @[value]; 5 NSLog(@"%@",arry); 6 //OC对象 转换为- >结构体 7 [value pointValue];
NSDate
1 NSDate *date = [NSDate date]; 2 NSLog(@"%@",date); 3 NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date]; 4 NSLog(@"%@",date2); 5 NSTimeInterval seconds = [date2 timeIntervalSince1970]; 6 NSLog(@"%f",seconds);
NSDate类型转换为字符串
1 //将当前时间转换为字符串 2 NSDate *times = [NSDate date]; 3 //日期格式化类 4 NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; 5 // y 年 M 月 d 日 6 // m 分 s 秒 H (24)时 h(12)时 7 formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; 8 NSString *str = [formatter stringFromDate:times]; 9 NSLog(@"%@",str);
字符串类型转换为NSDate
1 //将字符串转换为时间 2 NSString *time2 = @"2015/05/01 23:52"; 3 NSDateFormatter *formatter1 = [[NSDateFormatter alloc]init]; 4 formatter1.dateFormat = @"yyyy/MM/dd HH:mm"; 5 NSDate *dates = [formatter1 dateFromString:time2]; 6 NSLog(@"%@",dates);