OC3_字典

//

//  main.m

//  OC3_字典

//

//  Created by zhangxueming on 15/6/12.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import <Foundation/Foundation.h>

//NSDictionary

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

//NSMutableDictionary

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



//字典中对象都是键值对

//key:value

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

//字典中的key是唯一的, 但是value不一定是唯一的



int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //用value 及 key 构造字典对象

        NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"1",@"one",@"2",@"two",@"3",@"three",@"4",@"four",@"4",@"five",@"4",@"six", nil];

        NSLog(@"dict = %@", dict);

        //创建常量字典对象

        NSDictionary *dict2 = @{@"one":@"1",@"two":@"2"};

        NSLog(@"dict2 = %@", dict2);

        

        //用传入的字典对象创建字典对象

        NSDictionary *dict3 = [[NSDictionary alloc] initWithDictionary:dict];

        NSLog(@"dict3 = %@", dict3);

        

        //用传入的value数组及key数组创建字典对象

        NSDictionary *dict4 = [[NSDictionary alloc] initWithObjects:@[@"3",@"4",@"5",@"6"] forKeys:@[@"three",@"four",@"five",@"six"]];

        NSLog(@"dict4 = %@", dict4);

        

        //创建一个空的字典对象

        NSDictionary *dict5 = [[NSDictionary alloc] init];

        NSLog(@"dict5 = %@", dict5);

        

        //类方法创建字典对象

        //跟initWithObjectsAndKeys:方法对应

        NSDictionary *dict6 = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"one",@"2",@"two",@"3",@"three", nil];

        NSLog(@"dict6 = %@", dict6);

        //跟initWithObjects:forKeys:相对应

        NSDictionary *dict7 = [NSDictionary dictionaryWithObjects:@[@"3",@"4",@"5",@"6"] forKeys:@[@"three",@"four",@"five",@"six"]];

        NSLog(@"dict7 = %@", dict7);

        

        //跟initWithDictionary:相对应

        NSDictionary *dict8 = [NSDictionary dictionaryWithDictionary:dict7];

        NSLog(@"dict8 = %@", dict8);

        

        //计算字典中键值对的个数

        NSUInteger len = [dict count];

        NSLog(@"len = %li", len);

        

        //获取key对应的值

        id value = [dict objectForKey:@"two"];

        NSLog(@"value = %@", value);

        

        //获取所有的key

        NSArray *keys = [dict allKeys];

        NSLog(@"keys = %@", keys);

        

        //获取值对应所有的key

        NSArray *keys2 = [dict allKeysForObject:@"4"];

        NSLog(@"keys2 = %@", keys2);

        

        //获取所有的值

        NSArray *values = [dict allValues];

        NSLog(@"values = %@", values);

        

        //判断两个字典是否相等

        BOOL ret = [dict isEqualToDictionary:dict2];

        NSLog(@"ret = %i", ret);

        

        //遍历字典 -- 实际上是遍历字典的key

        

        //枚举器法

        NSEnumerator *keysArray = [dict keyEnumerator];

        for (id item in keysArray) {

            NSLog(@"%@:%@",item,[dict objectForKey:item]);

        }

        //快速枚举法

        for (id key in dict) {

            NSLog(@"%@:%@", key, [dict objectForKey:key]);

        }

        //只遍历字典中的值

        NSEnumerator *valuesArray = [dict objectEnumerator];

        for (id item in valuesArray) {

            NSLog(@"vlaue = %@", item);

        }

        

        //可变字典操作

        //构造指定容量大小的字典对象

        //+ (instancetype)dictionaryWithCapacity:(NSUInteger)numItems;

        NSMutableDictionary *mulDict = [[NSMutableDictionary alloc] initWithCapacity:20];

        NSLog(@"mulDict = %@",mulDict);

        

        //删除指定的key对应的键值对

        NSMutableDictionary *mulDict2 = [NSMutableDictionary dictionaryWithDictionary:@{@"one":@"1",@"two":@"2",@"three":@"3",@"four":@"4"}];

        [mulDict2 removeObjectForKey:@"two"];

        NSLog(@"mulDict2 = %@", mulDict2);

        //添加(或者修改)键值对

        [mulDict2 setObject:@"5" forKey:@"three"];

        NSLog(@"mulDict2 = %@", mulDict2);

        

        //将传入字典中的键值对添加到字典中  相同的修改,不同的就添加

        [mulDict2 addEntriesFromDictionary:dict3];

        NSLog(@"mulDict2 = %@", mulDict2);

        

        //删除所有的键值对

        [mulDict2 removeAllObjects];

        NSLog(@"mulDict2 = %@", mulDict2);

        

        //删除key数组对应所有键值对

        NSMutableDictionary *mulDict3 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"5",@"five",@"6",@"six",@"7",@"seven",@"8",@"eight", nil];

        [mulDict3 removeObjectsForKeys:@[@"five",@"eight",@"nine"]];

        NSLog(@"mulDict3 = %@", mulDict3);

        //重置字典对象

        [mulDict3 setDictionary:@{@"hello":@"1",@"world":@"3"}];

        NSLog(@"mulDict3 = %@", mulDict3);

        

    }

    return 0;

}

 

你可能感兴趣的:(oc)