NSDictionary 字典类

 字典是以键值对的形式存储数据的   key value  .    字典和数组都可以相互存储

1:创建字典,不可变的

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"zhong",@"name",nil];

NSLog(@"dic %@",dic);  //   dic{  name= zhong;}


2:快捷创建方式

NSDictionary *dic2 = @{@"name":@"zhong",@"year":@"22"};

NSLog(@"dic2 %@",dic2);  //   dic2{  name= zhong;year=22;}


3:字典中可以存储任意数据类型,输出的顺序不是自然顺序

NSArray *array = @[@"one",@"two"];


NSDictionary *dic3 = @{

                                       @"one":@"1",

                                       @"num":[NSNumber numberWithInt:10],

                                       @"dic":dic

                                       @"ar1":array

                                       };

NSLog(@"dic3  %@",dic3);  //  dic3{   dic = {  name= zhong;};   ar1=(one,two);  num=10;one=1;  }


4:获得字典的长度,指的是存储的key的个数,即对象个数

NSLog(@"count %d",[dic3 count]);  //NSLog(@"count %d",dic3.count);


5:从字典中取值

NSString *str = [dic3 objectForKey:@"one"];   //  1

NSDictionary *dicTmp = [dic3 objectForKey:@"dic"];   //  {name=zhong;}

NSArray *arrayTmp = [dic3 objectForKey:@"ar1"];      //  (one,two)


6遍历字典

//取出所有的key值

NSArray  *allkeys = [dic3 allkeys];   //(one,num,dic,ar1)


 for(int i = 0;i<allkeys.count;i++)

{

    NSString *key  = [ allkeys objectAtIndex:i];


   //如果字典中存储了多种不同的类型,那么最好用id类型去接收它

   id  obj  = [dic3 objectWithKey:key];


   NSLog(@"obj %@",obj);  // obj 1   obj  10   obj  {name=zhong;}   obj (one,two)

}


 7:枚举器遍历

NSEnumerator *enumerator  = [dic3 objectEnumerator];

id value;

while(value = [enumerator nextObject])

{     NSLog(@"value  %@",value);   // value 1   value  10   value  {name=zhong;}   value (one,two)

}


8:可变字典


 //创建一个可变长度字典

NSMutableDictionary *muDic = [[NDMutableDictionary  alloc]initWithCapacity:0];


//向字典中存储数据 

[muDic  setObject:@"1"   forKey:@"one"];

[muDic  setObject:@"2"   forKey:@"two"];

[muDic  setObject:@"3"   forKey:@"three"];


//删除

[muDic  removeObjectForKey:@"key"];


//全部删除

[muDic  removeAllObjects];


//向字典中存储对象

和前面创建Person对象一样,就不多说了,直接应用

Person *p1 = [[Person alloc] initWithName:@"zhong" andAge:@"22"];

Person *p2 = [[Person alloc] initWithName:@"tang" andAge:@"20"];

Person *p3 = [[Person alloc] initWithName:@"lili" andAge:@"30"];


[muDic setObject:p1 forKey:@"d1"];

[muDic setObject:p2 forKey:@"d2"];

[muDic setObject:p3 forKey:@"d3"];

//在向字典中存储数据的时候,一定要保证key值是唯一的

//[muDic setObject:p3 forKey:@"d3"];

//[muDic setObject:p3 forKey:@"d3"];

//[muDic setObject:p3 forKey:@"d3"];


//使用for 循环遍历可变数组

NSArray *allkeys = [muDic allKeys];

for(int i = 0;i<allkeys.count;i++)

{

    Person *p = [muDic objectForKey:[allkeys objectAtIndex:i];

};


//使用枚举器遍历可变数组

NSEnumerator *enumerator = [muDic objectEnumerator];

 Person *tmp;

while(tmp = [enumerator nextObject])

{

   NSLog(@"  tmp  %@",tmp);

}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值