代码改变世界

oc 中数据包装nsdate nsvalue nsnuber的用法

2013-05-01 19:57  甘超波  阅读(870)  评论(0编辑  收藏  举报








// // main.m // nsvalue // // Created by ganchaobo on 13-5-1. // Copyright (c) 2013年 ganchaobo. All rights reserved. // #import <Foundation/Foundation.h> #import "Student.h" //NsNumber 用法是把基本类型装换oc对象(不包含结构体包装) void CreateNsnuber(){ //通过字符串类名子得到 class NSString *classname=@"Student"; Class stu= NSClassFromString(classname);//通过字符串类名得到类 id tu=[[[stu alloc] init] autorelease]; NSString *methodname=@"Print:"; SEL method=NSSelectorFromString(methodname);//通过过字符串得到方法用@selector if([tu respondsToSelector:method]){//responedToSelector 判断类种是否这个方法。 // NSNumber *number=[NSNumber numberWithInt:1]; NSNumber *number=[NSNumber numberWithChar:'A']; [tu performSelector:method withObject:number]; NSLog(@"yes"); } else{ NSLog(@"NO"); } } //Nsvalue用法 :任何基本类包装,通用方法 void CreateNsvalue(){ float a=10; char * c=@encode(float); //第一个参数是要包装c语言种基本类型 NSValue *value=[NSValue valueWithBytes:&a objCType:c ]; float t; NSLog(@"%@",value); [value getValue:&t];//包装后的nsvalue要获取包装的值用getvalue const char * t1=[value objCType];//返回包装类型的字符串 (int 返回 i float类型--》f) NSLog(@"%f--->%s",t,t1); ///////////////////////////// NSRange rang=NSMakeRange(10, 30); char *r=@encode(NSRange); NSValue *value1=[NSValue valueWithBytes:&rang objCType:r]; NSLog(@"%@",value1); NSRange RR; [value1 getValue:&RR]; const char *rr=[value1 objCType]; NSLog(@"-->%s",rr); } //Nsvalue用法 :任何基本类包装,简单的方法 void CreateNsvalue1(){ NSValue *value=[NSValue valueWithRange:NSMakeRange(10, 20)]; NSRange R=[value rangeValue]; NSLog(@"%zi--%zi", R.length,R.location); NSValue *value1=[NSValue valueWithPoint:NSMakePoint(10, 20)]; NSPoint point=[value1 pointValue]; NSLog(@"%f--%f", point.x,point.y); } //NSData的用法 是用秒来计算 void CreateNSDate(){ NSDate *date=[NSDate date];//返回当前世界 NSDate *date1=[NSDate dateWithTimeIntervalSinceNow:20];//获取当前时间的基础上加20秒钟 NSDate *date2=[NSDate dateWithTimeIntervalSince1970:50];// 在1970-1-1 00;00:00上基础上加50秒 NSDate *date3=[NSDate distantFuture];//获取未来随机时间 NSDate *date4=[NSDate distantPast];//获取过去随机世界 [date timeIntervalSince1970];//从1970之后走过的秒 NSLog(@"%@",date); NSLog(@"%@",date1); NSLog(@"%@",date2); NSLog(@"%@",date3); NSLog(@"%@",date4); double sec= [date timeIntervalSince1970];//从1970之后走过的秒 NSLog(@"Seconde =%f",sec); } void datecompate(){ NSDate *date=[NSDate date]; NSDate *date1=[NSDate dateWithTimeInterval:10 sinceDate:date]; NSLog(@"%@",date); NSLog(@"%@",date1); NSLog(@"较小时间%@",[date earlierDate:date1]);//两个时间想比较,返回较小的时间 NSLog(@"较大时间%@",[date laterDate:date1]);//两个时间比较,放回较大de时间 //时间排序 NSLog(@"%zi",[date1 compare:date]); NSLog(@"%zi",[date compare:date1]); } void DateFormate(){ NSDateFormatter *formatter=[[[NSDateFormatter alloc] init] autorelease]; formatter.dateFormat=@"yyyy-MM-dd HH:mm:ss"; //字符串转换为时间,有时差 // NSDate *dd=[formatter dateFromString:@"2013-05-01 19:51:12"]; // NSLog(@"%@",dd); NSString *str=[formatter stringFromDate:[NSDate date]]; NSLog(@"%@",str); } int main(int argc, const char * argv[]) { @autoreleasepool { DateFormate(); } return 0; }