码迷,mamicode.com
首页 > 其他好文 > 详细

OC -- 迭代器/NSNumber/NSValue/NSRange/NSSet/NSDate 及相互转换.(杂)

时间:2015-07-23 21:51:33      阅读:234      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!