OC语言中的字典

来源:互联网 发布:如何判断数据的优劣 编辑:程序博客网 时间:2024/05/16 00:51








一:字典的基本概念

Foundation中的字典(NSDictionary,NSMutableDictionary)是由键-值对组成的数据集合.正如,我们在字典里查找单词的定义一样.

通过key(键),查找的对应的value(值),key通常是字符串对象,也可以是其他任意类型对象.在一个字典对象中,key的值必须是唯一的.

此外,字典对象的键和值不可以为空(nil),如果需要在字典中加入一个空值,可以加入NSNull对象

二:不可变字典-NSDictionary

1:初始化(以一个元素和多个元素进行初始化):

//以一个键值对象 进行初始化

?
1
2
3
4
5
NSDictionary *dict1=[NSDictionary dictionaryWithObject:numObj1 forKey:@"key1"];
NSLog(@"%@",dict1);
//以多个元素进行初始化
NSDictionary *dict2=[NSDictionary dictionaryWithObjectsAndKeys:numObj1, @"key1",numObj2,@"key2", nil];
NSLog(@"%@",dict2);
?
1
2:获取字典的数量
?
1
 

//获取字典的数量

NSInteger count=[dict2 count];

NSLog(@"%ld",count);

3:根据key获取相应的value对象

//根据key获取相应的value对象

?
1
2
NSString *value=[dict2 objectForKey:@"key1"];
NSLog(@"%@",value);
4:把字典的key转换成枚举对象用于遍历

 

NSEnumerator *enumerator=[dict2 keyEnumerator];
5:获取所有的key集合

//获取所有的key集合

?
1
2
NSArray *keys= [dict2 allKeys];
NSLog(@"%@",keys);
6:获取所有的value集合

 

//获取所有的value集合

?
1
2
NSArray *values=[dict2 allValues];
NSLog(@"%@",values);
三:可变字典NSMutableDictionary继承自NSDictionary

 

1:初始化字典

 

?
1
2
//初始化字典
      NSMutableDictionary *mutableDic=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",@"k3",@"v4",@"k4",@"v5",@"k5", nil];
2:向字典中添加指定的字典

 

//向一个字典中添加一个字典

?
1
2
3
NSDictionary *dict4=[NSDictionary dictionaryWithObject:@"v6"forKey:@"k6"];
[mutableDic addEntriesFromDictionary:dict4];
NSLog(@"%@",mutableDic);
3:向字典中添加value和key

 

 

?
1
2
//向字典中添加value和key
        [mutableDic setValue:@"object"forKey:@"key"];
4:创建空的字典,然后设置新的一个字典
?
1
2
3
4
//创建空的字典,然后设置新的一个字典,把会之前的字典全部覆盖掉
       NSMutableDictionary *mutableDict2=[NSMutableDictionary dictionary];
       [mutableDict2 setDictionary:mutableDic];
       NSLog(@"%@",mutableDict2);
5:删除指定key的value值

 

 

?
1
2
3
//移除指定key的value值
       [mutableDict2 removeObjectForKey:@"k4"];
       NSLog(@"%@",mutableDict2);
6:删除移除key集合的value值

 

 

?
1
2
3
4
//删除一组key的value值
        NSArray *arrayKeys=[NSArray arrayWithObjects:@"k1",@"k2",@"k3", nil];
        [mutableDict2 removeObjectsForKeys:arrayKeys];
        NSLog(@"%@",mutableDict2);
7:删除字典中所有的value

 

//删除字典中所有的数据

?
1
2
[mutableDict2 removeAllObjects];
NSLog(@"%@",mutableDict2);
四:枚举遍历

1:一般遍历

//一般遍历

?
1
2
3
4
5
6
NSArray *allKeys=[mutableDic allKeys];
for(NSInteger i=0; i<[allKeys count]; i++) {
    NSString *obj=[mutableDic objectForKey:[allKeys objectAtIndex:i]];
     
    NSLog(@"%@",obj);
}


2:快速枚举

//快速遍历

?
1
2
3
4
for(id key in mutableDic) {
    NSString *object=[mutableDic objectForKey:key];
    NSLog(@"%@",object);
}
3:迭代器枚举
?
1
2
3
4
5
6
7
8
//枚举器
    NSEnumerator *enumerator1= [mutableDic keyEnumerator];
      id key=[enumerator1 nextObject];
      while(key) {
          id object=[mutableDic objectForKey:key];
          NSLog(@"%@",object);
          key=[enumerator1 nextObject];
      }

0 0
原创粉丝点击