天天看点

NSDictionary 简介

字典是一个无序的集合,也可称之为键值对。与数组不同的是字典可以通过特定的key快速查找到想要的值,而不用遍历字典。所以一个唯一的key只能对应一个值,而多个key可以对应同一个值。字典分为不可变字典(NSDictionary)和可变字典(NSMutableDictionary)。本篇文章只介绍NSDictionary。。。

1、不可变字典的创建(注意书写规范)

1>初始化创建字典

NSDictionary* dict1=[[NSDictionary alloc]initWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",@"k3", nil]; //实例方法

 NSDictionary* dict2=[NSDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2",@"v3",@"k3", nil]; //类方法
           

2>通过键值数组创建字典

NSDictionary* dict3=[[NSDictionary alloc]initWithObjects:@[@"v1",@"v2",@"v3"] forKeys:@[@"k1",@"k2",@"k3"]]; //实例方法

    NSDictionary* dict4=[NSDictionary dictionaryWithObjects:@[@"v1",@"v2",@"v3"] forKeys:@[@"k1",@"k2",@"k3"]];//类方法
           

3>通过已有的字典创建

NSDictionary* dict5=[[NSDictionary alloc]initWithDictionary:dict1];//实例方法

NSDictionary* dict6=[NSDictionary dictionaryWithDictionary:dict1];//类方法
           

4>最简单的方式

NSDictionary *[email protected]{@"k1":@"v1", @"k2":@"v2", @"k3":@"v3"};
           

2、遍历字典

NSDictionary *[email protected]{@"k1":@"v1", @"k2":@"v2", @"k3":@"v3"};

//通过key查找value
NSString* obj=[dict1 objectForKey:@"k3"];
NSLog(@"value:%@", obj);

//获取所有的key
NSArray *keys=[dict1 allKeys];
NSLog(@"所有的键:%@", keys);

//获取所有的值
NSArray *values=[dict1 allValues];
NSLog(@"所有的值:%@", values);

//快速枚举法遍历  **枚举的是key**
for(id obj in dict1)
{
    NSLog(@"key:%@", obj); //键
    NSLog(@"value:%@", [dict1 objectForKey:obj]); //值
}

//枚举器法  objectEnumerator 枚举的是值
NSEnumerator *enumerator=[dict1 objectEnumerator];
id obj;
while(obj=[enumerator nextObject])
{
   NSLog(@"枚举器法obj:%@",obj);
}

//枚举器法 枚举键
NSEnumerator *kenumerator=[dict1 keyEnumerator];
id key;
while(key=[kenumerator nextObject])
{
   NSLog(@"键枚举器法key:%@",key);
}

//字典的长度
NSUInteger count=dict1.count;
NSLog(@"字典一共有%lu个键值对",count);
           

打印结果

NSDictionary 简介