OC基础—集合之NSSet、NSDictionary(字典)、NSMutableDictionary

来源:互联网 发布:ping测试网络 编辑:程序博客网 时间:2024/04/27 13:22

------ android培训java培训、期待与您交流! ----------


集合之NSSet、NSDictionary(字典)、NSMutableDictionary

1. NSSet

简介:
NSSet和NSArray都是差不多的,最大的区别是NSArray是有顺序的,而NSSet是无序的。
而且NSSet有一个子类NSMutableSet(可变数组)。
NSSet创建:
创建空的NSSet:
NSSet *s = [NSSet set]; // NSSet是不可变的所以s永远是空的
有元素的NSSet:
NSSet *s2 = [NSSet setWithObjects:@"liye", @"hshs",@"231",nil];
因为NSSet是无序的,所以我们无法去除特定元素,只能随机取出元素
NSString *str = [s2 anyObject];

NSMutableSet:(可变的Set)
创建一个NSMutableSet,添加与删除元素
NSMutableSet *s = [NSMutableSet set];// 添加元素[s addObject:@"liye"];// 删除元素,因为是无序的,所以只能删除所有元素[a removeAllObject];

2. NSDictionary(字典)

可以说是NSArray、NSSet、NSDictionary中最好用的。
创建:
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"liye" forKey:@"name"];
有着我们就可以看出,NSDictionary里存的都是键值对,根据name这个属性就可以取得name对应的值liye。例如:
id obj = [dict objectForKey:@"name"];
这里的obj就是那么对应的元素liye。

我们可以存储多个键值对:
NSArray *keys = @[@"name", @"address"];NSArray *objects = @[@"liye", @"heima"];// 使用这个方法存储多个键值对NSDictionary *dict = [NSDictionary dictionaryWithObject:objects forkeys:keys];
还有一种方式
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:                                 @"liye",@"name",                                 @"address", @"黑马", nil];

第一个是Obj,之后一个就是他的Key。
看来非常的麻烦,所以编译器又给了我们一个特性:
创建NSDictionary:
NSDictionary *dict = @{@"name" : @"liye", @"address" : @"黑马"};
调用元素:
id obj = dict[@"name"];
这样就简单多了。

3. NSMutableDictionary(可变)

建立一个新的可变Dictionary
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
添加键值对
[dict setObject:@"liye" forKey@"name"];[dict setObject:@"北京" forKey@"address"];
在字典里元素是没有顺序的。
如果有重复的Key,那么就会覆盖掉原来Key的值。

4. 字典遍历

NSDictionary *dict = @{@"name" : @"liye", @"heima" : @"123"};
我们先使用for循环遍历
NSArray *keys = [dict allKeys];for (int i = 0; i<dict.count; i++){    id obj = dict[keys[i]];    NSLog(@"%@", obj);}
用block来遍历
[dict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop){     NSLog(@"%@-%@",key , obj);}];



------ android培训java培训、期待与您交流! ----------

0 0
原创粉丝点击