---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
集合类:NSArray、NSSet、NSDictionary
一、NSArray
1、概念
OC数组,只能装OC对象类型,基本类型不能装
比C语言数组的好处:C语言只能装同一类型,OC可以随便来
2、子类
NSMutableArray:可变数组,父类NSArray为不可变数组
3、使用方法
1>创建(不能放基本数据类型,不能放nil)
①调用类方法:
NSArray *array1 = [NSArray array]; // 因为是不可变数组,如果这样创建就永远是个空数组了
NSArray *array3 = @[@"Demon1", @"Demon2"];
②快速创建(编译器特性):
[NSArray arrayWithObjects:@"Demon1", @"Demon2", nil]; // nil为数组结束标志,在数组里不能存放nil值
2>数组访问方式
①调用类方法:
[array2 objectAtIndex:1];
②快速访问(编译器特性):
array2[1]; // 利用数组名和下标(常用)
3>元素个数
[array count]; // 返回元素个数
array.count; // 跟[array count];一样
4>遍历方法
①最普通for循环,通过定义变量i来逐个访问
②使用array的obj
for(id obj in array) // obj代表数组中的每一个元素
{
NSInteger i = [array indexOfObject:obj]; // 返回当前数组元素的下标
NSLog(@"%ld - %@", obj);}
}
③block(推荐方式:不用自己加下标,而且不用自己取参数)
每遍历一个元素调用一次block,当前元素和索引位置会当做参数传给block
*stop相当于break
[array enumerateObjectsUsingBolck:
^(id obj, NSInteger idx, BOOL *stop)
{
NSLog(@"%ld - %@", idx, obj);
if(idx == 1)
{
*stop = YES;
}
}];
4、NSMutableArray
1>继承父类所有方法
2>特有方法
①添加方法
NSMutableArray *array2 = [NSMutableArray array];
[array2 addObject:@"Demon1", @"Demon2"];
②删除方法
[array removeObjectAtIndex:1];
[array removeObject:@"Demon1"];
5、注意点
1>用快速创建方式创建数组,返回对象类型是NSArray
二、NSSet
1、概念
可以理解为一个无序的数组
2、子类
NSMutableSet
3、使用方法
1>创建(不能放基本数据类型,不能放nil)
NSSet *s = [NSSet set]; // 因为是不可变,如果这样创建就永远是个空了
NSSet *s2 = [NSSet setWithObjects:@"DEMON1","DEMON2", nil];
2>元素个数
[s2 count]; // 返回元素个数
s2.count; // 跟[s2 count];一样
3>访问集合
因为无序,所以只能随机返回对象
NSString *str = [s2 anyObject];
4、NSMutableSet
1>继承父类所有方法
2>特有方法
①添加方法NSMutableSet *s3 = [NSMutableSet s3];
[s3 addObject:@"Demon1", @"Demon2"];
②删除方法(因为无序,所以不能按下标删除)
[array removeObject:@"Demon1"];
三、NSDictionary
1、概念
存放键值对的字典,根据key可以找到value
2、子类
NSMutableDictionary:可变字典,父类NSDictionary为不可变字典
3、使用方法
1>创建
①调用类方法:key索引,value值
NSDictionary *dict1 = [NSDictionary dictionaryWithObject:@"Demon1" forKey:@"name"];
②使用数组存放
NSArray *keys = @[@"name", @"address"];NSArray *objects = @[@"Demon", @"beijing"];
NSDictionary *dict2 = [NSDitonary dictionaryWithObjects:Objects forKeys:keys];
③一个object跟一个key,中间逗号隔开(不易看清)
NSDictionary *dict3 = [NSDitonary dictionaryWithObjectsAndKeys:
@"Demon1", @"name",
@"beijing", @"address",
@"1233454", @"Phone",nil];
④快速创建(编译器特性)key : value, key2 : value2
NSDictionary dict4 = @{@"name" : @"Demon1", @"address" : @"beijing"};
2> 元素访问
①调用类方法:根据key索引查找value值
id obj = [dict objectForKey:@"name"];
②快速查找(编译器特性)
id obj2 = dict[@"name"];
3>元素个数(返回的是键值对的个数)
[dict count]; // 返回键值对数
dict.count; // 跟[dict count];一样
4>遍历
①for循环
// 先取出所有的key
NSArray *keys = [dict allkeys];
for(int i = 0; i < dict.count; i++)
{
NSString *key = keys[i];
NSString *object = dict[key];
NSLog("%@ - %@", key, object);
}
②block(参数的意思和数组的差不多,不赘述了)
[dict enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop)
{
NSLog("%@ - %@", key, obj);
}];
4、NSMutableDictionary
1>继承父类所有方法
2>特有方法
①添加方法(添加无先后顺序之分)如果同样的key再赋值,会覆盖原值,key不能相同,value可以相同
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"Demon" forKey:@"name"];
②删除方法
[dict removeObjectforKey:@"name"];
5、注意点
1>用快速创建方式创建字典,返回对象类型是父类NSDictionary,不可变!
四、总结
1、NSArray、NSMutableArray
1>有序
2>快速创建(不可变):@[obj1, obj2, obj3, nil];
3>快速访问:数组名[i];
2、NSSet、NSMutableSet
1>无序
3、NSDictionary、NSMutableDictionary
1>无序
2>快速创建(不可变):@{key1 : value2, key2 : value2, key3 : value3};
3>快速访问:字典名[key];
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com