标签:objective-c 迭代器 nsdate 值对象
//一: 迭代器
// 数组
NSArray *arr= @[@"1",@"2",@"3",@"4",@"5"];
NSEnumerator *enumerator = [arr objectEnumerator];
NSString *str = nil;
while (str = [enumerator nextObject]) {
NSLog(@"%@",str);
}
// 字典
// 直接打印字典的vaule.
NSDictionary *dic = @{@"1":@"2", @"3":@"4"};
NSEnumerator *enumrator = [dic objectEnumerator];
NSString *vaule = nil;
while (vaule = [enumrator nextObject]) {
NSLog(@"%@",vaule);
}
//二: 值对象 (相互转化)
// 1: NSNumber
// 那基本数据类型转换成对象类型.
// Integer -> NSNumber
NSInteger a = 2;
NSNumber *num = [[NSNumber alloc] initWithInteger:a];
NSLog(@"%@",num);
// NSNumber -> Integer
//(1)
NSInteger b = [num integerValue];
//(2)
NSNumber *number = @10;
NSArray *arr = @[@"1",@10];
// 2: NSValue
// 把结构体和指针转换成对象类型.
// 结构体的 . 用于访问自己的成员变量;不是对象调用自己属性的点语法.
//NSRange -> NSValue
NSRange range = {2,5};
NSLog(@"%ld",range.length);
NSValue *value = [NSValue valueWithRange:range];
NSArray *arr = @[value];
// NSValue -> NSRange
NSRange rangeVau = [value rangeValue];
// 指针(pointer) -> NSValue
int a = 10;
int *p = &a;
NSValue *pointer = [NSValue valueWithPointer:p];
//NSValue -> 指针(pointer)
int *p1 = [pointer pointerValue];
//三: NSSet NSMutableSet -- 集合.
// NSSet 是无序的.
NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"2", nil];
NSLog(@"%@",set);
NSLog(@"%ld",set.count);
NSLog(@"%@",[set anyObject]);
NSLog(@"%d",[set containsObject:@"3"]);
// 可变集合
NSMutableSet *set1 = [NSMutableSet set];
[set1 addObject:@"9"];
[set1 addObject:@"8"];
NSLog(@"%@",set1);
[set1 removeObject:@"9"];
NSLog(@"%@",set1);
// 遍历
for (NSString *str in set1) {
NSLog(@"%@",str);
}
//四: NSDate
NSDate *date = [NSDate date];
NSLog(@"%@",date);
// date 获取的时间无论哪个区,都是打印相对应的零时区
// 获取一下当前所在的时区.
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSLog(@"%@",zone);
// 获取一下和零时区相差的秒数.
NSInteger sec = [zone secondsFromGMTForDate:date];
NSLog(@"%ld",sec);
// 通过相差的秒数,能获取到现在的时间.
NSDate *newdate = [NSDate dateWithTimeIntervalSinceNow:sec];
NSLog(@"%@",newdate);
NSDate *times = [NSDate dateWithTimeIntervalSince1970:0];
NSLog(@"%@",times);
//练习1:找明天这时候的时间.
NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:(sec + 24 *3600)];
NSLog(@"明天的现在:%@",tomorrow);
//练习2: 昨天这时候时间.
NSDate *yesterday = [NSDate dateWithTimeInterval:(-24 *3600) sinceDate:newdate];
NSLog(@"昨天的现在:%@",yesterday);
// 时间间隔
// 对应的Double 类型, 可以是小数.
//计算两个对象的时间间隔
NSTimeInterval interval = [tomorrow timeIntervalSinceDate:yesterday];
NSLog(@"%g",interval);
// 练习3:计算当前时间与一个固定时间的差值.
NSDate *unchange = [NSDate dateWithTimeIntervalSinceNow:36*3600];
NSLog(@"固定时间:%@",unchange);
NSLog(@"现在的时间%@",date);
NSTimeInterval inte = [unchange timeIntervalSinceDate:date];
NSLog(@"时差为:%g",inte);
if (inte > 0 && inte < 60) {
NSLog(@"刚刚");
}else if( inte >= 60 && inte <= 3600){
NSLog(@"%g分钟前",inte/60);
}else if(inte > 3600 && inte <= 3600*24){
NSLog(@"%g小时前",inte/3600);
}else{
NSLog(@"超过%g天",inte/3600/24);
}
//五:日期和字符串的相互转换.
// NSDate -> NSString
// 第一种方式:
NSDate *date = [NSDate date];
NSString *datestr = [NSString stringWithFormat:@"%@",date];
NSLog(@"%@",datestr);
// 第二种方式:
//时间的格式
// yyyy-MM-dd HH-mm-ss;
// y 年
// M 月
// d 日
// H 24小时制, h 12小时制
// m 分
// s 秒
//先设置一下时间的格式,要转换的时间要和格式相吻合.
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];
NSDate *date = [NSDate date];
// 通过格式,那指定的时间直接转换成NSString
// 通过这种方式,系统会把时间切换成当前时间,无时区之差.
NSString *strdate = [formatter stringFromDate:date];
NSLog(@"%@",strdate);
// NSString -> NSDate
//把时间又减去8小时.
NSString *time = @"2015-7-23 17-19-50";
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
[formatter2 setDateFormat:@"yyyy-MM-dd HH-mm-ss"];
NSDate *date = [formatter2 dateFromString:time];
NSLog(@"%@",date);
版权声明:本文为博主原创文章,未经博主允许不得转载。
OC -- 迭代器/NSNumber/NSValue/NSRange/NSSet/NSDate 及相互转换.(杂)
标签:objective-c 迭代器 nsdate 值对象
原文地址:http://blog.csdn.net/gao_zi/article/details/47027239