黑马程序员技术交流社区
标题:
OC学习笔记18--Foundation之包装类与日期
[打印本页]
作者:
wowthe1st
时间:
2015-8-7 01:22
标题:
OC学习笔记18--Foundation之包装类与日期
适合有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;
作者:
wsj195328
时间:
2015-8-17 00:59
请问有OC基础的完整视频吗,Q291876969
作者:
dzb5461883
时间:
2015-8-17 07:11
学习了,谢谢分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2