迭代器
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&×<=3600){
NSLog(@"%ld分钟前",(NSInteger)times/60);
}
else if(times >3600&×<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);