您的位置:首页 > 编程语言 > C语言/C++

OC语言字典

2015-07-25 09:40 357 查看
// 创建字典对象
//    NSDictionary *dic = [[NSDictionary alloc] init];
//    NSDictionary *dict = [NSDictionary dictionary];
NSDictionary *diction = [[NSDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"3",@"4", nil] ;
NSLog(@"%@", diction);
// 定义字面量字典类型
NSDictionary *dic = @{@"1": @"2",@"3":@"4"};    // 不可变的类型 意味着里边的内容也不可变
NSLog(@"%@", dic);
// key是唯一的,但是value可以重复,key不能为空(注意成对出现)
// 当前有多少键值对
NSLog(@"%ld", diction.count);
// 通过key找到对应的value
NSLog(@"%@", [diction objectForKey:@"2"]);
// diction[对应的key]
NSLog(@"%@", diction[@"2"]);
// 获取字典里所有key以及key所对应的value
NSLog(@"%@", diction.allKeys);
NSLog(@"%@", [diction allValues]);


// 可变的字典
NSMutableDictionary *dictionary1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"1",@"2",@"3",@"4", nil];
// for循环如何遍历字典
for (NSInteger i = 0; i < dictionary1.count; i++) {
NSLog(@"%@ = %@", dictionary1.allKeys[i],dictionary1.allValues[i]);
}
// forin的前部分是字典里的key
for (NSString *temp in dictionary1) {
NSLog(@"%@ = %@", temp, dictionary1[temp]);
}
// 对可变字典通过key值进行添加或替换
// 当前key值不存在时
[dictionary1 setObject:@"7" forKey:@"8"];
NSLog(@"%@", dictionary1);
// 当key存在时
[dictionary1 setObject:@"199" forKey:@"8"];
NSLog(@"%@", dictionary1);
// 移除键值对
[dictionary1 setValue:nil forKey:@"8"];
NSLog(@"%@", dictionary1);
// 这就是setValue和setObject的区别 当对value进行赋值为nil时 可执行移除对应key键值对操作 而Object如果这样写会直接崩溃
[dictionary1 setValue:@"199" forKey:@"8"];
[dictionary1 removeObjectForKey:@"8"];
NSLog(@"%@", dictionary1);


// 字典里嵌套数组
NSArray *arr1 = @[@"1", @"2", @"3", @"4"];
NSArray *arr2 = @[@"5", @"6", @"7", @"8"];
NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:arr1,@"arr1",arr2,@"arr2", nil];
// 遍历
for (NSString *str in dictionary) {
// 针对对应的key找到value,value是一个数组,所以用一个数组对象来接收
NSArray *arr = dictionary[str];
for (NSString *temp in arr) {
NSLog(@"%@", temp);
}
}


// 数组里嵌套字典
NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"杨林",@"name",@"19",@"age", nil];
NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"刘山山",@"name",@"20",@"age", nil];
NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"商帅",@"name",@"18",@"age", nil];
NSDictionary *dic4 = [NSDictionary dictionaryWithObjectsAndKeys:@"崔磊",@"name",@"21",@"age", nil];
NSArray *array = @[dic1,dic2,dic3,dic4];
// 遍历
for (NSDictionary *dic in array) {
for (NSString *key in dic) {
NSLog(@"%@", dic[key]);
}
}


// 三层结构
// 字典里套数组再套字典
NSArray *array1 = @[dic1,dic2];
NSArray *array2 = @[dic3,dic4];
NSDictionary *bigDic = [NSDictionary dictionaryWithObjectsAndKeys:array1, @"array1",array2,@"array2", nil];
// 遍历
for (NSString *str in bigDic) {
NSArray *arr = bigDic[str];
for (NSDictionary *dic in arr) {
for (NSString *key in dic) {
NSLog(@"%@", dic[key]);
}
}
}


// 数组里套数组再套字典
NSArray *bigArr = @[array1, array2];
for (NSArray *arr in bigArr) {
for (NSDictionary *dic in arr) {
for (NSString *key in dic) {
NSLog(@"%@", dic[key]);
}
}
}
// 稍微麻烦一点的就是字典里嵌套数组了,遍历的时候forin里循环变量要写key的NSString类型,然后在里边通过key找到对应value存放的新定义的数组中,再进行下一步forin


// 定义三个书的字典
NSMutableDictionary *book1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"三国演义",@"name",@"100",@"price",nil];
NSMutableDictionary *book2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"水浒传",@"name",@"200",@"price",nil];
NSMutableDictionary *book3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"西游记",@"name",@"300",@"price",nil];
NSMutableDictionary *book4 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"红楼梦",@"name",@"400",@"price",nil];
NSMutableDictionary *book5 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"金瓶梅",@"name",@"500",@"price",nil];
NSMutableArray *arr = [NSMutableArray arrayWithObjects:book1,book2,book3,book4,nil];
// 添加书籍
[arr addObject:book5];
// 删除书籍
[arr removeObject:book4];
// 按照书名更改价格
for (NSDictionary *dic in arr) {
if ([dic[@"name"] isEqualToString:@"金瓶梅"]) {
[dic setValue:@"600" forKey:@"price"];
}
}
for (NSMutableDictionary *dic in arr) {
for (NSString *temp in dic) {
NSLog(@"%@ = %@", temp, dic[temp]);
}
}
NSLog(@"**************");
// 打印所有书籍
for (NSMutableDictionary *dic in arr) {
for (NSInteger i = 0; i < dic.count; i++) {
NSLog(@"%@ = %@", dic.allKeys[i], dic.allValues[i]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: