OC-值对象, NSSet, NSDate

迭代器

NSEnumerator *enumetator=[arr objectEnumerator];
    NSString *str=nil;
    while (str=[enumetator nextObject]) {
        NSLog(@"%@",str);
    }

字典

NSEnumerator *enumetator2=[dic objectEnumerator];
    NSString *str=nil;
    while (str=[enumetator2 nextObject]) {
        NSLog(@"%@",str);
        }
        // 打印的就是value

值对象

把基本数据类型转换称对象类型

//    INteger->NSNumber
    NSInteger a=10;
    NSNumber *number=[[NSNumber alloc]initWithInteger:a];
    NSLog(@"%@",number);

// NSNumber->Integer
    NSInteger b=[number integerValue];

// 用字面量的方法可以
NSNumber *num=@10;
    NSArray *arr1=@[@"1",@10]; // 用字面量的方法之后就不会报错可以用了

NSValue

// 作用是 把结构体和指针换成对象类型
  // 结构体的 . 是访问变量,对象调用属性是点语法
    NSRange range={2,5};
    NSLog(@"%ld",range.length);

    // NSRange->NSvalue
    NSValue *value=[NSValue valueWithRange:range];
    NSLog(@"%@",value);

    // NSValue->NSRange
    NSRange rangeV=[value rangeValue];

对a这个变量进行取地址

int a=10;
    int *p=&a;
    NSValue *pointer=[NSValue valueWithPointer:p];
    int *p1=[pointer pointerValue];

找到某个电影名

NSString *movieName=dic[@"result"][1][@"movieName"];
    NSLog(@"%@",movieName);

打印所有的电影名

NSArray *arr=dic[@"result"];
// 遍历这个数组
    for (NSDictionary *dic in arr) {
        NSLog(@"%@",dic[@"movieName"]);
    }

找到数据中的名字

NSString *str=dic[@"events"][2][@"owner"][@"name"];
    NSLog(@"%@",str);

找到两个时间 进行拼接

NSString *str1=dic[@"events"][2][@"begin_time"];
    NSString *str2=dic[@"events"][2][@"end_time"];
    NSString * newEnd = [str2 substringFromIndex:10];
    NSLog(@"%@",newEnd);
    NSString *newTime = [NSString stringWithFormat:@"%@-%@",str1,newEnd];
    NSLog(@"%@",newTime);

找到 category对应的film有几个

NSMutableArray *arr=dic[@"events"];
NSInteger num=0;
    for (NSMutableDictionary *temp in arr) {
        if ([temp[@"category"] isEqualToString:@"film"] ) {
            num++;
        }
    }
    NSLog(@"%ld",num);

NSSet 集合

// NSSet 是无序的
    // NSSet不能有重复的元素,如果有重复的元素则只打印一个
    // 集合里的元素必须是对象类型
NSSet *set= [NSSet setWithObjects:@"1",@"2",@"3",@"4",@"5",@"2", nil];
NSLog(@"%@",set);
NSLog(@"%ld",set.count);

返回其中的某一个元素

NSLog(@"%@",[set anyObject]);
    NSLog(@"%d",[set containsObject:@"3"]);

普通方式创建一个结合的对象

NSSet *set=[[NSSet alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5", nil
    ];
    NSLog(@"%@",set);

可变的集合

NSMutableSet *set=[NSMutableSet setWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
    NSLog(@"%@",set);

添加元素

[set addObject:@"7"];
//    NSLog(@"%@",set);

删除元素

[set removeObject:@"5"];
  NSLog(@"%@",set);

用forin进行遍历

for (NSString *str in set) {
        NSLog(@"%@",str);
    }

NSDate是一个日期的类

NSDate *date=[NSDate date];
    NSLog(@"%@",date);

date获取的时间无论在哪个区,都是打印相对应的零时区的时间

获取一下当前所在的时区

NSTimeZone *zone=[NSTimeZone systemTimeZone];
    NSLog(@"%@",zone);

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

NSInteger seconds=[zone secondsFromGMTForDate:date];
    NSLog(@"%ld",seconds);

通过相差的秒数,能获取到现在的时间

NSDate *localDate=[NSDate dateWithTimeIntervalSinceNow:(8*3600)];
NSLog(@"%@",localDate);
    NSDate *times=[NSDate dateWithTimeIntervalSince1970:0];
    NSLog(@"%@",times);

明天这个时候的时间

NSDate *tomorrow=[NSDate dateWithTimeIntervalSinceNow:(8*3600+(24*3600))];
    NSLog(@"%@",tomorrow);

昨天这个时候的时间

NSDate *yestoday=[NSDate dateWithTimeIntervalSinceNow:(8*3600-(24*3600))];
NSLog(@"%@",yestoday);

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

NSTimeInterval interval =[tomorrow timeIntervalSinceDate:date];
    NSLog(@"%g",interval);

练习
计算当前时间和一个固定时间的时差,如果差值在60秒内,输出”刚刚”,如果在60秒外3600秒内,输出”xx分钟前”,如果3600秒外,3600*24秒内,输出”xx小时前”

NSDate *date1=[NSDate date];
    NSDate *date2=[NSDate dateWithTimeIntervalSinceNow:1000];
    NSTimeInterval times=[date2 timeIntervalSinceDate:date1];
    if (times<60) {
        NSLog(@"刚刚");
    }
    else if(times>=60&&times<=3600){
        NSLog(@"%ld分钟前",(NSInteger)times/60);
    }
    else if(times >3600&&times<3600*24){
        NSLog(@"%ld小时前",(NSInteger)times/3600);
    }

日期的格式

把日期和字符串的一个互相的转换

// NSDate->NSString
    // 第一种方式
//    NSDate *date=[NSDate date];
//    NSString *dateStr=[NSString stringWithFormat:@"%@",date];
//    NSLog(@"%@",dateStr);

时间的格式

// yyyy-mm-dd hh-mm-ss
    // H 24小时制  h 12小时制
    // 先设置一下时间的格式,要转换的时间要和格式相吻合
    NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];

NSDate->NSString

NSDate *date=[NSDate date];
    // 通过格式,把制定的时间直接转换成NSString
    // 通过这种方式,系统还会把时间切换成当前的时间
    NSString *strDate=[formatter stringFromDate:date];
    NSLog(@"%@",strDate);

字符串->NSDate

// 把时间又减掉8小时
    NSString *timeStr=@"2015-7-23 17-18-10";
    NSDate *date1=[formatter dateFromString:timeStr];
    NSLog(@"%@",date1);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值