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];
(@"%@",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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值