您的位置:首页 > 其它

20150612_OC之字典NSDictionary及NSMutableDictionary

2015-06-12 17:44 423 查看
//NSDictionary

//创建一个不可变字典对象

//NSMutableDictionary

//创建一个可变字典对象

//字典中对象都是键值对:key-->value

//字典中的键值对是没有顺序的

//字典中的key是唯一的,但是value是不唯一的,一个value可以有多个key

//
//  main.m
//  IOS150612_ObjectiveC_Dictionary
//
//  Created by Peng Junlong on 15/6/12.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#import <Foundation/Foundation.h>

//NSDictionary
//创建一个不可变字典对象

//NSMutableDictionary
//创建一个可变字典对象

//字典中对象都是键值对:key-->value
//字典中的键值对是没有顺序的
//字典中的key是唯一的,但是value是不唯一的,一个value可以有多个key

int main(int argc, const char * argv[]) {
@autoreleasepool {
//用Value及key构建字典对象
NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"four",@"4",@"three",@"3",@"two",@"2",@"one",@"1", @"four",@"5",@"two",@"6",nil];//前面的是value,后面的是key
NSLog(@"%@",dic);

//创建常量字典对象
NSDictionary *dic2 = @{@"4":@"four",@"3":@"three",@"2":@"two"};
NSLog(@"dic2 = %@",dic2);

//用传入的字典对象创建字典对象
NSDictionary *dic3 = [[NSDictionary alloc] initWithDictionary:dic];
NSLog(@"dic3 = %@",dic3);

//用传入的value数组及key数组创建字典对象,个数一一对应
NSDictionary *dic4 = [[NSDictionary alloc] initWithObjects:@[@"four",@"three",@"two"] forKeys:@[@"4",@"3",@"2"]];
NSLog(@"dic4 = %@",dic4);

//创建一个空的字典对象
NSDictionary *dic5 = [[NSDictionary alloc] init];
NSLog(@"dic5 = %@",dic5);

//类方法创建字典对象
//跟initWithObjectsAndKeys:对应
NSDictionary *dic6 = [NSDictionary dictionaryWithObjectsAndKeys:@"four",@"4",@"three",@"3",@"two",@"2",@"one",@"1", nil];
NSLog(@"dic6 = %@",dic6);

//跟initWithObjects:forKeys:对应
NSDictionary *dic7 = [NSDictionary dictionaryWithObjects:@[@"four",@"three",@"two"] forKeys:@[@"4",@"3",@"2"]];
NSLog(@"dic7 = %@",dic7);

//计算字典中键值对的个数
NSUInteger len = [dic7 count];
NSLog(@"Len = %ld",len);

//获取key对应的值
id value = [dic objectForKey:@"2"];
NSLog(@"value = %@",value);

//获取所有的key,返回一个数组
NSArray *keys = [dic allKeys];
NSLog(@"keys = %@",keys);

//获取value对应的多有的key
NSArray *keys2 = [dic allKeysForObject:@"four"];
NSLog(@"keys2 = %@",keys2);

//获取字典中多有的值
NSArray *values = [dic allValues];
NSLog(@"value = %@",values);

//判断两个字典是否相等
BOOL result = [dic isEqualToDictionary:dic2];
NSLog(@"result = %d",result);

//遍历字典,实质上是遍历字典的key
//枚举器法,枚举key
NSEnumerator *keysArray = [dic keyEnumerator];
for (id item in keysArray) {
NSLog(@"%@:%@",item, [dic objectForKey:item]);
}

//快速枚举法,枚举的是key
for (id key in dic) {
NSLog(@"%@:%@",key, [dic objectForKey:key]);
}

//只遍历字典中的值,不能查找到key,因为value对应的不一定是唯一的
NSEnumerator *valueArray = [dic objectEnumerator];
for (id item in valueArray) {
NSLog(@"value = %@",item);
}

/****************	Mutable Dictionary	****************/
//可变字典操作
//构造指定容量大小的字典对象
NSMutableDictionary *mulDict = [[NSMutableDictionary alloc] initWithCapacity:20];
NSLog(@"mulDict = %@",mulDict);

//删除指定的key对应的键值对
NSMutableDictionary *mulDict2 = [NSMutableDictionary dictionaryWithDictionary:@{@"4":@"four",@"3":@"three",@"2":@"two"}];
[mulDict2 removeObjectForKey:@"3"];
NSLog(@"%mulDict2 = %@",mulDict2);

//添加(或者修改)键值对,如果当前字典中已经有了这个key,则对这个key进行修改,若没有就是添加
[mulDict2 setObject:@"seven" forKey:@"2"];  //  修改
[mulDict2 setObject:@"seven" forKey:@"3"];  //  添加
NSLog(@"%mulDict2 = %@",mulDict2);

//将传入的字典中的键值对添加到字典中,若有相同的键,则起到修改字典中相对应键的键值对
[mulDict2 addEntriesFromDictionary:dic3];
NSLog(@"%mulDict2 = %@",mulDict2);

//删除所有的键值对,即清空字典对象
//        [mulDict2 removeAllObjects];
//        NSLog(@"%mulDict2 = %@",mulDict2);

//删除key数组对应的所有键值对
[mulDict2 removeObjectsForKeys:@[@"2",@"4",@"6"]];
NSLog(@"%mulDict2 = %@",mulDict2);

//重置字典对象
[mulDict2 setDictionary:dic];
NSLog(@"%mulDict2 = %@",mulDict2);

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: