字典:
1,字典是一种数据结构,是以键值对的形式来存储数据2,字典中的键值对可以是任意类型的对象,但是key一般是字符串
3,键在字典中是唯一存在的
4,字典中,键值对是没有顺序的
<1>创建方法
(1) 从Xcode4.6 以后允许用下述方式创建一个字典
NSDictionary* dic4 = @{@"1":@"one",@"2":@"two",@"3":@"three”};
(2) //实例化方法
- (
id
)initWithObjectsAndKeys:(
id
)firstObject, …;
(3)
用一个字典来创建一个新的字典
-(
id
)initWithDictionary(
NSDictionary
*)otherDictionary;
(4)
用两个数组来创建字典,一个数组中装的是所有的键
另外一个数组装的是所有的值,
两个数组的长度必须相等
NSArray
* valueArray =
@[
@"one"
,
@"two"
,
@"three"
]
;
NSArray * keyArray = @[ @"1" , @"2" , @"3" ] ;
NSDictionary * dict3 = [[ NSDictionary alloc ] initWithObjects :valueArray forKeys :keyArray];
NSArray * keyArray = @[ @"1" , @"2" , @"3" ] ;
NSDictionary * dict3 = [[ NSDictionary alloc ] initWithObjects :valueArray forKeys :keyArray];
(5)
该创建方式携带的参数是值键排列
系统会将奇数个元素作为值,偶数个元素作为键来创建字典
NSDictionary * dict = [[ NSDictionary alloc ] initWithObjectsAndKeys : @"one" , @"1" , @"two" , @"2" , nil ];
系统会将奇数个元素作为值,偶数个元素作为键来创建字典
NSDictionary * dict = [[ NSDictionary alloc ] initWithObjectsAndKeys : @"one" , @"1" , @"two" , @"2" , nil ];
// 类方法创建
(6) + (
id
)dictionaryWithObjectsAndKeys:(
id
)firstObject, ...;
(7) + ( id )dictionaryWithDictionary:( NSDictionary *)dict;
(7) + ( id )dictionaryWithDictionary:( NSDictionary *)dict;
<2> 获取键值对个数
- ( NSUInteger )count;
<3> 根据key 获取相应的值
- ( id )objectForKey:( id )aKey;
<4> 获取字典中所有的key
- ( NSArray *)allKeys;
<5> 获取值是 anObject 的所有的key
- ( NSArray *)allKeysForObject:( id )anObject;
<6> 获取字典中所有的值
- ( NSArray *)allValues;
<7>如何遍历字典
枚举遍历
NSEnumerator* enu = [dic keyEnumerator];
NSString* str;
while((str = [enu nextObject])!= nil) {
NSLog(@"%@",[dicobjectForKey:str]);
}
//通过字典的keyEnumerator方法返回一个枚举器,这个枚举器中装得是字典的Key,遍历这些Key ,通过key 去获取value
NSEnumerator* enu = [dic keyEnumerator];
NSString* str;
while((str = [enu nextObject])!= nil) {
NSLog(@"%@",[dicobjectForKey:str]);
}
//通过字典的keyEnumerator方法返回一个枚举器,这个枚举器中装得是字典的Key,遍历这些Key ,通过key 去获取value
快速遍历
for in循环:
NSDictionary* dic = @{@"1":@"one",@"2":@"two",@"3":@"three",@"4":@"four"};
for (NSString * key in dic) {
NSLog(@"%@",[dicobjectForKey:key]);
}
for in循环:
NSDictionary* dic = @{@"1":@"one",@"2":@"two",@"3":@"three",@"4":@"four"};
for (NSString * key in dic) {
NSLog(@"%@",[dicobjectForKey:key]);
}
二.可变字典
<1>
增加键值对
[muDic setObject : @"one" forKey : @"1" ];
//如果Key 是存在的,就修改key 所对应的value 的值,如果不存在,就添加一个键值对
[muDic setObject : @"one" forKey : @"1" ];
//如果Key 是存在的,就修改key 所对应的value 的值,如果不存在,就添加一个键值对
//
增加整个字典
- ( void )addEntriesFromDictionary:( NSDictionary *)otherDictionary;
- ( void )addEntriesFromDictionary:( NSDictionary *)otherDictionary;
<2> 删除键值对
//通过key 去删除key所对应的键值对
[muDic removeObjectForKey : @"5" ];
//把所有想删除的键值对的key都放到一个数组中,通 removeObjectsForKeys , 删除所有数组中key 对应的键值对
NSArray * keyArray = @[ @"1" , @"3" ] ;
[muDic removeObjectsForKeys :keyArray];
//删除所有的键值对
[muDic removeAllObjects ];
<3>修改键值对
[muDic setValue : @"five" forKey : @"4" ];
//如果Key 是存在的,就修改key 所对应的value 的值,如果不存在,就添加一个键值对
//修改整个字典
- ( void )setDictionary:( NSDictionary *)otherDictionary;