//集合类
*NSArray
1>不可变数组
2>只能存放OC对象,不能存放基本数据类型,如int,double,struct,enum等
3>不能存放nil,因为nil是NSArray数组结束的标志
4>NSArray的创建:
NSArray *array = [NSArray arrayWithObject:@"visa"];
NSArray *array2 = [NSArray arrayWithObjects:@"visa",@"jack",[[Person alloc] init],nil];
5>快速创建一个NSArray对象:
NSArray *array = @[@"visa",@"jack",@"rose"];
<1>@[]这是一种编译器的特性
<2>@[]只能创建NSArray,不能创建NSMutableArray
6>NSArray的元素个数
NSLog(@"%ld",array.count);
7>NSArray的元素访问
<1>NSLog(@"%@",[array objectAtIndex:1]);
<2>NSLog(@"%@",array[1]);
8>找出某元素在数组中的位置:
[array indexOfArray:@"visa"];
9>遍历数组
<1>for(id obj in array)
{
NSUInteger i =[array indexOfArray:obj];
NSLog(@"%ld ---%@",i,obj);
}
id obj 代表着数组中的每一个元素
<2>[array enumerateObjectsUsingBlock:
^(id obj, NSUInteger idx, BOOL *stop)
{
NSLog(@"%ld-----%@",idx,obj);
}]
定义一个BOOL类型的指针是因为block中是值传递,不能修改参数的数值,只好传一个地址,通过指针来间接操作
*NSMutableArray NSArray的子类
1>不可变数组
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"visa",@"jack",@"rose",@"visa",nil];
2>添加元素
[array addObject:[[Person alloc] init]];
3>删除元素
<1>[array removeAllObjects];
<2>[array removeObject:@"jack"];
<3>[array removeObjectAtIndex:1];
<4>[array removeObject:@"visa" inRange:NSMakeRange(3,1)]; 在range范围内查找特定元素进行删除
<5>[array removeObjectsInRange:NSMakeRange(1,3)];
*NSSet
1>和NSArray基本一样,但是元素的排列没有顺序
2>创建NSSet
NSSet *s = [NSSet setWithObjects:@"visa",@"jack",@"rose",nil];
3>元素的取用(只能随机拿出元素)
NSString *str = [s anyObject];
4>因为没有顺序,所以没有.conut
*NSMutableSet NSSet的子类
1>创建
NSMutableSet *s = [NSMutableSet setWithObjects:@"visa",@"jack",@"rose",nil];
2>添加元素
[s addObject:@"123"];
3>删除元素
[s removeObject:@"visa"];
*NSDictionary
1>存储的是键值对:
key ------> value
注意:是无序的
2>创建
<1>NSArray *keys = @[@"name",@"address",@"qq"];
NSArray *objects = @[@"visa",@"太原",@"12345"];
NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
<2>NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"visa",@"name",
@"太原",@"address",
@"12345",@"qq",nil];
<3>快速创建
NSDictionary *dict = @{@"name":@"visa",
@"address":@"太原",
@"qq":@"12345"};
3>按键寻值
<1>id obj = [dict objectForKey:@"address"];
<2>id obj = dict[@"address"];
4>dict.count返回的是键值对的个数
5>遍历
<1>NSArray *keys = [dict allKeys];
for(int i = 0;i < keys.count;i++)
{
NSString *key = keys[i];
NSString *value = dict[key];
NSLog(@"%@ ---- %@",key,value);
}
<2>[dict enumerateKeysAndObjectsUsingBlock:
^(id key,id obj,BOOL *stop){
NSLog(@"%@ ---- %@",key,obj);
}];
*NSMutableDictionary NSDictionary的子类
1>创建
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
2>添加键值对
[dict setObject:@"visa" forKeys:@"name"];
3>移除键值对
[dict removeObjectForKey:@"name"];
*NSFileManager
1>单例对象,整个程序运行期间这个类的对象只有一个,所以所有方法调用的对象都是这个对象
获得文件管理者:
NSFileManager *mgr = [NSFileManager defaultManager];
2>取出文件拓展名:(忽略大小写)
NSString *path = @"/Users/visa/Desktop/.txt";
NSString *extension = [[path pathExtension] lowercaseString];
3>用数组存储当前文件夹内的所有内容:
NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];
*NSNmuber
1>将一个基本数据类型转换为一个OC对象
NSNmuber *num = [NSNmuber numberWithInt:10];
int a = [num intValue];
int b = [@"20" intValue];
2>快速转换:
@10;
@10.5;
@"a" 是NSString对象
@'a' 是NSNmuber对象
int age = 10;
@(age);
*NSValue
1>NSNmuber的父类,可以包装任何数据类型
NSValue *value = [NSValue valueWithPoint:CGPointMake(1,5)];
NSPoint p = [value pointValue];
*NSDate
1>创建
<1>NSDate *date = [NSDate date];
创建出的是0时区的时间
<2>NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
创建出的是比date晚5秒的NSDate对象
2>NSTimeInterval seconds = [date timeIntervalSince1970];
表示从1970年开始走过的秒数
3>[date2 timeIntervalSinceNow];
表示从当前时间和date2差的秒数
4>日期格式化,NSDate转为NSString
<1>NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *str = [formatter stringFromDate:[NSDate date]];
5>NSString转为NSDate
NSString *time = @"2011/12/2 11:12"
设置格式化
NSDate *date2 = [formatter dateFromString:time]; |