字典 由键-值对组成的数据集合
4种创建字典方式
1>针对单个键值对 直接赋值
1 NSDictionary *dic = [NSDictionary dictionaryWithObject:@"dajie" forKey:@"name"];//直接创建字典 2 id object = [dic objectForKey:@"name"];// 取出name键对应值 3 NSLog(@"%@",object);
2>以键值对集合创建
1 NSArray *obj = @[@"dajie",@"ly"]; 2 NSArray *keys = @[@"name",@"address"]; 3 NSDictionary *dic1 = [NSDictionary dictionaryWithObjects:obj forKeys:keys];//创建字典 4 NSLog(@"%@",dic1);
3>直接创建并赋值
1 NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"dajie",@"name",@"ly",@"address", nil];//nil不可少 2 NSLog(@" ---%@",dic2);
3 id obj2 = [dic2 objectForKey:@"name"];//根据键取出对应的值
4 NSLog(@"%@",obj2);
4>开发中常用
//xcode 新特性 开发中常用 15 NSDictionary *dic3 = @{@"name" : @"dajie",@"address":@"ly",@"qq":@"12324124"}; 16 NSLog(@"%@ --%@--%ld",dic3,[dic3 objectForKey:@"name"],dic3.count);
可变字典
2 NSMutableDictionary *mdic = [NSMutableDictionary dictionary];//创建
添加元素和删除元素
//添加键值对 20 [mdic setObject:@"dajie" forKey:@"person"]; 21 [mdic setObject:@"hashiqi" forKey:@"dog"]; 22 [mdic setObject:@"shapi" forKey:@"dog"]; //主键一样字典元素前者会被后者覆盖 23 NSString *str = mdic[@"dog"]; 24 NSLog(@"%@",str); 25 //删除 26 [mdic removeAllObjects]; 27 [mdic removeObjectForKey:@"dog"]; 28 NSLog(@"%@",mdic);
遍历元素
1基本for循环遍历
30 NSDictionary *newDic = @{ 31 @"name": @"dajie", 32 @"dog":@"HASHIQI"
}; 33 NSArray *key = [newDic allKeys];//取出所有的key 34 for (int i; i < newDic.count; i++) { 35 NSString *keys = key[i]; 36 NSString *value = newDic[keys]; 37 NSLog(@"%@ = %@",keys,value); 38 }
2 简洁遍历
//推荐使用 快速遍历 40 [newDic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 41 NSLog(@"%@ - %@ ",key ,obj ); 42 }];
总结
/* NSArray 相当于java List; // NSSet相当于java Set // NSdictionary相当于java Map // NSArray NSMutableArray 有序 快速访问 @[obj1,obj2,obj3]; 快速访问元素 数组名[i]; // NSSet NSMutableSet 无序 // NSDictionary NSMutableDictionary 无序 快速创建@{key1 : value1,key2 : value2}; 快速访问 字典名[key]; */
1 NSArray *persons = @[ 2 @{@"name" :@"dajie",@"phone":@"1234353", 3 @"books" : @[@"5分钟编程ios",@"5分钟编程Android"]}, 4 @{@"name" :@"xiaojie",@"phone":@"2234353"}, 5 @{@"name" :@"jinyu",@"phone":@"3234353",@"age" : @"1.2"} 6 ]; 7 // 先取出数组位置对应的字典 8 // 再根据字典name这个key找到对应的值 9 // NSLog(@"%@",persons[1][@"name"]); 10 // NSLog(@"%@",persons[0][@"books"]); 11 12 for (NSString *arrays in persons) { 13 // NSInteger *lines = [persons indexOfObject:@"name"]; 14 // NSLog(@"%ld - %@",lines,arrays); 15 NSLog(@" %@ ",arrays); 16 }