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

Posted blfbuaa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC07 -- 迭代器/NSNumber/NSValue/NSRange/NSSet/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 = [[NSNumberalloc] 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 = [NSValuevalueWithRange:range];

       NSArray *arr = @[value];

   // NSValue -> NSRange

       NSRange rangeVau = [value rangeValue];

   //指针(pointer) -> NSValue

       int a = 10;

       int *p =  &a;

       NSValue *pointer = [NSValuevalueWithPointer:p];

   //NSValue ->指针(pointer)

       int *p1 = [pointer pointerValue];



//三: NSSet  NSMutableSet -- 集合.

   // NSSet是无序的.

    NSSet *set = [NSSetsetWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"2",nil];

   NSLog(@"%@",set);

   NSLog(@"%ld",set.count);

   NSLog(@"%@",[setanyObject]);

    NSLog(@"%d",[setcontainsObject:@"3"]);

 

    // 可变集合

    NSMutableSet *set1 = [NSMutableSetset];

    [set1addObject:@"9"];

    [set1addObject:@"8"];

   NSLog(@"%@",set1);

    [set1removeObject:@"9"];

   NSLog(@"%@",set1);

    // 遍历

   for (NSString *strin set1) {

       NSLog(@"%@",str);

    }




//四: NSDate

   NSDate *date = [NSDatedate];

   NSLog(@"%@",date);

   // date 获取的时间不管哪个区,都是打印相相应的零时区    

   // 获取一下当前所在的时区.

    NSTimeZone *zone = [NSTimeZonesystemTimeZone];

   NSLog(@"%@",zone);

    

   // 获取一下和零时区相差的秒数.

   NSInteger sec = [zone secondsFromGMTForDate:date];

   NSLog(@"%ld",sec);

    

   // 通过相差的秒数,能获取到如今的时间.

    NSDate *newdate = [NSDatedateWithTimeIntervalSinceNow:sec];

   NSLog(@"%@",newdate);

    

    NSDate *times = [NSDatedateWithTimeIntervalSince1970:0];

   NSLog(@"%@",times);

    

   //练习1:找明天这时候的时间.

   NSDate *tomorrow = [NSDatedateWithTimeIntervalSinceNow:(sec + 24 *3600)];

   NSLog(@"明天的如今:%@",tomorrow);

 

    //练习2: 昨天这时候时间.

   NSDate *yesterday = [NSDatedateWithTimeInterval:(-24 *3600)sinceDate:newdate];

   NSLog(@"昨天的如今:%@",yesterday);

    

    //时间间隔

    // 相应的Double 类型, 能够是小数.

   //计算两个对象的时间间隔

   NSTimeInterval interval = [tomorrow timeIntervalSinceDate:yesterday];

   NSLog(@"%g",interval);


   // 练习3:计算当前时间与一个固定时间的差值.

    NSDate *unchange = [NSDatedateWithTimeIntervalSinceNow:36*3600];

   NSLog(@"固定时间:%@",unchange);

   NSLog(@"如今的时间%@",date);

   NSTimeInterval inte = [unchange timeIntervalSinceDate:date];

    

   NSLog(@"时差为:%g",inte);

   if (inte > 0 && inte <60) {

       NSLog(@"刚刚");

    }elseif( inte >= 60 && inte <=3600){

       NSLog(@"%g分钟前",inte/60);

        

    }elseif(inte > 3600 && inte <=3600*24){

       NSLog(@"%g小时前",inte/3600);

    }else{

       NSLog(@"超过%g",inte/3600/24);

    }

   

//五:日期和字符串的相互转换.

// NSDate -> NSString

// 第一种方式:


   NSDate *date = [NSDatedate];

   NSString *datestr = [NSStringstringWithFormat:@"%@",date];

   NSLog(@"%@",datestr);


// 另外一种方式:

 //时间的格式

    // yyyy-MM-dd  HH-mm-ss;

    // y

    // M

    // d

    // H 24小时制, h 12小时制

    // m

    // s

    

   //先设置一下时间的格式,要转换的时间要和格式相吻合.

    NSDateFormatter *formatter = [[NSDateFormatteralloc] init];

    [formatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];

   NSDate *date = [NSDatedate];

    // 通过格式,那指定的时间直接转换成NSString

   // 通过这样的方式,系统会把时间切换成当前时间,无时区之差.

   NSString *strdate = [formatter stringFromDate:date];

   NSLog(@"%@",strdate);


// NSString -> NSDate

   //把时间又减去8小时.

    NSString *time =@"2015-7-23 17-19-50";

    NSDateFormatter *formatter2 = [[NSDateFormatteralloc] init];

    [formatter2 setDateFormat:@"yyyy-MM-dd HH-mm-ss"];

   NSDate *date = [formatter2 dateFromString:time];

   NSLog(@"%@",date);




以上是关于OC07 -- 迭代器/NSNumber/NSValue/NSRange/NSSet/NSDate 及相互转换.(杂)的主要内容,如果未能解决你的问题,请参考以下文章

OC 线程操作 - GCD快速迭代

oc渲染器提示着色器失败

我的迭代器实现不起作用,它有啥问题?

oc渲染器显示显卡关闭

oc渲染器清理缓存

C4D安装oc渲染器菜单上面没有