字典是面向过程语言中所没有的数据类型。字典是面向对象语言所特有的。
【NSDictionary】 不可变字典,字典一旦创建好就不可以对字典的内容做任何更改,不可添加键值对,不可以删除键值对。
创建一个不可变的字典
/* 1.前面一个为value后面一个为key必须成对存在
2.key是唯一的,不能够重复,如果重复不会报错,但后出现的不会保存到字典中;
3.字典是无顺序存在的
4.字典的key值和value值都是对象;
*/
//创建一个空字典,一般不用,因为它是不可变的,不能添加删除内容。
NSDictionary *diction = [NSDictionarydictionary];
NSLog(@"%@",diction);
// 创建一个只含一个键值对的字典,注意:objects与object keys与key的区别(英文的复数)
NSDictionary *diction1 = [NSDictionarydictionaryWithObject:@"zhangsan"forKey:@"zs"];
NSLog(@"%@",diction1);
NSDictionary *dict = [[NSDictionaryalloc]initWithObjectsAndKeys:@"1",@"one",@"2",@"two",@"3",@"three",@"4",@"four",@"5",@"five",nil];
NSLog(@"%@",dict);
//字典以%@打印是在{}花括号内,数组是()小括号
//打印结果
// key---<value
// five = 5;
// four = 4;
// one = 1;
// three = 3;
// two = 2;
//字典键值对的个数
NSLog(@"%lu",dict.count);// 返回NSUInteger
// 快速创建一个字典 @{@"key":@"value",,,};
NSDictionary *diction2 =@{@"zs":@"zhangsan",@"ls":@"lisi",@"bz":@"banzhang"};
NSLog(@"%@",diction2);
//通过已存在的字典创建字典
NSDictionary *dict1 = [NSDictionarydictionaryWithDictionary:dict];
NSLog(@"%@",dict1);
//通过两个数组创建一个字典
NSArray *array =@[@"one",@"two",@"three"];
NSArray *array2 =@[@"1",@"2",@"3"];
NSDictionary *dict2 = [NSDictionarydictionaryWithObjects:array2forKeys:array];
NSLog(@"%@",dict2);
//通过key查找对应的value;
NSLog(@"%@",[dictobjectForKey:@"two"]);
NSLog(@"%@",dict[@"two"]);
//创建一个枚举器通过key来遍历字典
//1.获取所有的key
//2.通过key获取value
//------------------------------------------------------------------
NSEnumerator *key = [dictkeyEnumerator];
NSString *obj =nil;
while (obj = [keynextObject]) {
NSLog(@"%@-->%@",obj,[dictobjectForKey:obj]);
}
//快速枚举遍历
for (NSDictionary *objin dict) {
NSLog(@"%@-->%@",obj,[dictobjectForKey:obj]);
}
//快速枚举遍历
for (NSString *keyin dict) {
NSLog(@"key=%@,value=%@",key,[dictobjectForKey:key]);
}
//-------新方法----------- block遍历-----------key value stop停止
[dictenumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop) {
NSLog(@"%@<<<<<<<%@",key,obj);
}];