适合有java和C基础的同学迅速了解OC
- #import <Foundation/Foundation.h>
- void OCObjectConversion();
- void NSDateTest();
- int main(int argc, const char * argv[])
- {
- NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
- //OC对象与非OC对象数据类型的转换
- OCObjectConversion();
- NSLog(@"\n-------------------------\n\n");
- //日期类的使用
- NSDateTest();
-
- [pool drain];
- return 0;
- }
- void NSDateTest()
- {
- //将时间格式化成字符串的工具类
- NSDateFormatter *df=[[[NSDateFormatter alloc] init] autorelease];
- //设置日期格式
- [df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
- //将符合设置日期格式的字符串转换成日期
- NSDate *date=[df dateFromString:@"2015-08-07 10:10:10"];
- NSLog(@"\nbeforeFormat=%@\nafterFormat=%@",date,[df stringFromDate:date]);
-
-
- //获取当前时间
- NSDate *now=[NSDate date];
- //120s后
- NSDate *later=[NSDate dateWithTimeIntervalSinceNow:120];
- //5分钟前
- NSDate *before=[NSDate dateWithTimeIntervalSinceNow:-300];
- //获取离当前时间的秒数
- NSTimeInterval secsGap=[later timeIntervalSinceNow];
- double secsGap2=[before timeIntervalSinceNow];
-
- //默认按照格林威治时间打印
- NSLog(@"\nnow=%@\nlater=%@,secsGap=%.2f\nbefore=%@,secsGap2=%.2f",
- now,later,secsGap,before,secsGap2);
-
-
- // 返回1970到当前日期对象时间经过的秒数,NSTimeInterval是double类型
- NSTimeInterval nowSecs=[now timeIntervalSince1970];
- // 用秒数来创建时间
- NSDate *now2=[NSDate dateWithTimeIntervalSince1970:nowSecs];
- NSLog(@"secs=%.2f,now2=%@",nowSecs,now2);
-
-
-
- }
- void OCObjectConversion()
- {
- int a =10;
- //几种包装C中基本数据类型的方式
- NSLog(@"%@-%@-%@",[NSNumber numberWithInt:a],@'\n',@(a));
- //还原成基本数据类型
- NSLog(@"%d-%d-%d",[[NSNumber numberWithInt:'0'] intValue],
- [@10 intValue],[@(a) intValue]);
-
-
- //OC字符串与数字的转换
- NSString *numStr=[NSString stringWithFormat:@"%d",100];
- int num=[numStr intValue];
- NSLog(@"numStr=%@,num=%d",numStr,num);
-
-
- //利用NSValue包装结构体
- NSValue *range=[NSValue valueWithRange:NSMakeRange(0,0)];
-
- NSValue *point=[NSValue valueWithPoint:NSMakePoint(1,1)];
-
- NSSize *size=[NSValue valueWithSize:NSMakeSize(2,2)];
-
- NSRect *rect=[NSValue valueWithRect:NSMakeRect(0,0,3,3)];
-
- // 非OC对象包装成OC对象后才可保存在OC集合中
- NSMutableDictionary *mdict=[NSMutableDictionary dictionary];
- [mdict setObject:range forKey:@"range"];
- [mdict setObject:point forKey:@"point"];
- [mdict setObject:size forKey:@"size"];
- [mdict setObject:rect forKey:@"rect"];
-
- NSString *(*rangeToStr)(NSRange)=NSStringFromRange;
- NSString *(*sizeToStr)(NSSize)=NSStringFromSize;
- NSString *(*pointToStr)(NSPoint)=NSStringFromPoint;
- NSString *(*rectToStr)(NSRect)=NSStringFromRect;
-
-
- NSLog(@"%@",mdict);
-
- NSArray *keys=[mdict allKeys];
- int i;
- id key,obj;
- for(i=0;i<[keys count];i++)
- {
- key=[keys objectAtIndex:i];
- obj=[mdict objectForKey:key];
-
- //打印NSValue对象的值
- NSLog(@"%@=%@",key,obj);
-
- // 还原成struct类型后打印
- if([@"range" isEqualToString:key])
- {
- NSLog(@"%@=%@",key,rangeToStr([obj rangeValue]));
- }else if([@"size" isEqualToString:key])
- {
- NSLog(@"%@=%@",key,sizeToStr([obj sizeValue]));
- }else if([@"rect" isEqualToString:key])
- {
- NSLog(@"%@=%@",key,rectToStr([obj rectValue]));
- }else if([@"point" isEqualToString:key])
- {
- NSLog(@"%@=%@",key,pointToStr([obj pointValue]));
- }
- }
-
- }
复制代码
包装类:
负责将非OC对象包装成OC对象
NSNumber:
继承自NSValue,专门负责包装C中的基本数据类型;
//包装基本数据类型,便捷形式为 @10,如果是变量则@(i)
+(id)numberWithInt:(int)i;
//还原成基本数据类型
-(int)intValue;
NSValue:
用来将非OC对象类型数据包装成OC对象;
//包装NSRange,CGPoint,CGSize,CGRect这些常用struct成NSValue对象
+(id)valueWithPoint:(CGPoint)point;
//还原
-(CGRange)rangeValue;
NSString与基本数据类型互相准换:
//基本数据类型转字符串
NSString *numStr=[NSString stringWithFormat:@"%d",10];
int i=[numStr intValue];
日期类 NSDate:
//获取当前时间
+(id)date;
//创建与指定时间间隔N秒的时间
+(id)dateWithTimeInterval:(NSTimeInterval)secs sinceDate:(NSDate*)since;
//创建当前时间secs秒后的时间
+(id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;
//创建从1970后secs秒的时间
+(id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;
//返回当前到该时间的秒数
-(NSTimeInterval)timeIntervalSinceNow;
//返回1970到该时间的秒数
-(NSTimeInterval)timeIntervalSine1970;
格式化日期的工具类:NSDateFormatter
// 设置使用的日期格式
-(void)setDateFormat:(NSString *)format;
//日期转字符串
-(NSString *)stringFromDate:(NSDate *)date;
//字符串转日期
-(NSDate *)dateFromString:(NSString *)dateStr;
|
|