zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    Android杂谈ubuntu系统下adb连接小米2
    Android UI设计ListView的页脚(footer)的使用
    Android杂谈关于Android的nodpi,xhdpi,hdpi,mdpi,ldpi
    ”该证书已被签发机构吊销“错误解决方案
    Android杂谈RelativeLayout中的baseline是什么?
    ubuntu下git更改默认编辑器
    Android UI设计ListView Item的OnItemLongClickListener同时监听两种事件
    Android UI设计ListView的item选中效果
    Ubuntu下ssh服务器文件操作命令
    ubuntu下emacs的配置(cedit,ecb)
  • 原文地址:https://www.cnblogs.com/0515offer/p/4572102.html
Copyright © 2011-2022 走看看