A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Jack-xie 中级黑马   /  2014-10-11 12:47  /  814 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

     NSValue 能够把各种类型的数据包装为对象,NSNumber 其实是它的子类
     
     一、把系统自带结构体包装成NSValue类型的对象
     如果我们想把结构体放到集合中,就需要把结构体包装成OC对象:
     [NSValue valueWithRange:<#(NSRange)#>];
     [NSValue valueWithPoint:<#(NSPoint)#>];
     [NSValue valueWithSize:<#(NSSize)#>];
     [NSValue valueWithRect:<#(NSRect)#>];
     
     二、把 NSValue 对象还原成结构体
     [value rangeValue];
     [value pointValue];
     [value sizeValue];
     [value rectValue];
     
     三、把任何类型包装成NSValue类型的对象
     例举:
     typedef struct{
     int year;
     int month;
     int day;
     }Date;
     
     Date date = {2003,10,17};// 要包装的数据
     char *type = @encode(Date);// 把数据的类型转换成字符串
     // 包装成NSValue对象
     NSValue *myDate = [NSValue valueWithBytes:&date objCType:type];
     
     四、如何解包
     Date date1;// 存储数据的变量
     [myDate getValue:&date1];// 取出包装的结构体,并赋值给date1
     
     
     
     
     NSDate 是用来表示日期和时间的类
     
     一、创建
     1.当前时间:
     NSDate *date = [NSDate date];// date 是执行这行代码时的时间
     NSLog(@"%@",date);// 打印date时默认打印格林尼治时区的时间
     
     date = [NSDate dateWithTimeIntervalSinceNow:10];// 比现在的时间快10秒的时间(未来的时间)
     
     date = [NSDate dateWithTimeIntervalSince1970:1000];//以1970年初零点为基准,n秒后的时间
     
     date = [NSDate dateWithTimeIntervalSinceReferenceDate:1000];// 以2001年初零点为基准,n秒后的时间
     
     NSDate *date2 = [NSDate dateWithTimeInterval:10 sinceDate:date];// 以某个时间为基准,n秒后的时间
     // 表示date这个时间晚10秒钟的那个时间
     
     date = [NSDate distantFuture];// 遥远未来的某一天
     
     date2 = [NSDate distantPast];// 遥远过去的某一天
     
     二、日期格式的字符串
     在手机上显示日期需要转换成字符串,可以按照指定的格式转换
     
     1. 需要一个日期格式类:
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
     2. 设置格式:
     formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
     大写M代表月,小写m代表分钟,大写H代表24小时制时间,小写h代表12小时制时间
     
     NSDate *date = [NSDate date];
     3. 根据格式把日期转换成字符串
     NSString *str = [formatter stringFromDate:date];// 把date转换成字符串
     4. 根据格式把字符串转换成日期:
     NSDate *date1 = [formatter dateFromString:str];
     
     如果字符串的日期格式不同,就设置一个相应的dateFormat
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];// 设定一个对象
     NSString *str = @"2008/08/08 08:08";// 某种格式的日期和时间
     formatter.dateFormat = @"yyyy/MM/dd HH:mm";// 设置对应的格式
     NSDate *date = [formatter dateFromString:str];// 就可以转换成NSDate对象了
     NSLog(@"%@",date);// 查看返回的日期

1 个回复

倒序浏览
好高端的样子
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马