认识字典
字典是用存储键值对的数据结构;每一个键对应一个值,在一个字典中,键是唯一的,值可以重复。值才是目的,键是手段(为了可以快速的获取值)
key : value
key和value都可以是任意类型的对象,但是我们的key一般使用字符串
//数组中元素是有顺序的,字典中的元素没有顺序
字典也分为可变字典和不可变,(可变指字典的大小可变,字典的元素可变)
一、字典的初始化
******NSDictionary*******
//简单粗暴的创建一个字典
NSDictionary * dictionary = @{@"key1":@"value1",@"key2":@"value2",@"key3":person};
NSLog(@"%@",dictionary);
//========使用对象方法初始化一个字典==创建并初始化一个空的字典
NSDictionary * dcit = [[NSDictionary alloc] init];
//=========使用类方法初始化一个字典==创建一个空的字典
NSDictionary * dict4 = [NSDictionary dictionary];
//使用不同的键值对初始化一个字典
NSDictionary * dict1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"ob1",@"key1",@"ob2",@"key2",person,@"person", nil];
//使用一个字典去初始化另外一个字典
NSDictionary * dict2 = [[NSDictionary alloc] initWithDictionary:dict1];
//使用两个数组,把一个数组的元素作为值,另外一个数组的元素作业键,来初始化一个字典
NSArray * values = @[@"aaa",@"bbb",@"ccc",@"aaa"];
NSArray * keys = @[@"1",@"3",@"2",@"4"];
//values和keys的数组元素个数必须相等
NSDictionary * dict3 = [[NSDictionary alloc] initWithObjects:values forKeys:keys];
*******NSMutableDictionary******
//创建一个空的可变字典
NSMutableDictionary * mdict = [[NSMutableDictionary alloc] init];
//简单粗暴的方式创建字典是,前面是key:后面是value
NSDictionary * dict = @{@"aaa":@"11",@"bbb":@"22"};
//使用一个字典去初始化另外一个字典
NSMutableDictionary * mdict2 = [[NSMutableDictionary alloc] initWithDictionary:dict];
//使用两个数组,把一个数组的元素作为值,另外一个数组的元素作业键,来初始化一个字典
NSArray * keys = @[@"a",@"b",@"c"];
NSArray * values = @[@"aaa",@"bbb",@"ccc"];
NSMutableDictionary * mdict3 = [[NSMutableDictionary alloc] initWithObjects:values forKeys:keys];
#pragma mark 键值对个数
//- NSUInteger count;
//获取字典的键值对个数
NSUInteger count = [dict7 count];
NSLog(@"%lu",count);
#pragma mark 通过键获取值
//- (id)objectForKey:(id)aKey;
id value = [dict7 objectForKey:@"3"];
NSLog(@"%@",value);
id value2 = dict7[@"3"]; //不推荐
NSLog(@"%@",value2);
#pragma mark 获取所有的键
NSArray * allKeys = [dict7 allKeys];
NSLog(@"%@",allKeys);
#pragma mark 获取所有的值
NSArray * allValues = [dict7 allValues];
NSLog(@"%@",allValues);
#pragma mark 通过值找键
NSArray* objectKeys = [dict7 allKeysForObject:@"aaa"];
NSLog(@"%@",objectKeys);
#pragma mark 遍历字典
//in前面的对象返回的字典的key
for (id key1 in dict7) {
NSLog(@"%@<-->%@",key1,[dict7 objectForKey:key1]);
}
NSLog(@"===============");
NSArray * key2s = [dict7 allKeys];
for (int i = 0; i < [key2s count]; i++) {
id key2 = [key2s objectAtIndex:i];
NSLog(@"%@<-->%@",key2,[dict7 objectForKey:key2]);
}
字典在以后的开发中经常使用到,比如数据的请求和解析,数据的缓存等等