OC中的字典dictionary

字典 NSDictionary / NSMutableDictionary
1.概念:字典是关键字‘key’及其定义的值(value)所构成的集合,即它是由key-value组成的键值对的集合。
’key‘一般是’nsstring‘类型的,’value‘是OC中任意对象。对于字典来讲,我们就是通过’key‘来访问’value‘.
2.为什么在有了数组之后,还需要字典?在由大量的数据或者频繁的查找的时候,使用字典效率更高,因为字典采用键查询的优化存储方式。

   //初始化
    //创建一个空的字典
    NSDictionary *dictionary1 = [[NSDictionary alloc]init];
    NSDictionary *dictionary2 = [NSDictionary dictionary];

    //创建一个只有一个键值对
    NSDictionary *dictionary3 = [NSDictionary dictionaryWithObject:@"Rick" forKey:@"name"];

    //创建一个只有多个键值对
    NSDictionary *dictionary4 = [NSDictionary dictionaryWithObjectsAndKeys:@"Rick",@"name",@25,@"age",@"GZ",@"address", nil];

    //字典里面存放的元素都要是对象类型才行,如果基本数据类型,要先把基本数据类型进行封装,然后在存放到这些集合中去。

     NSDictionary *dictionary5 = [NSDictionary dictionaryWithDictionary:dictionary4];
    NSLog(@"%@",dictionary5);


    //新语法创建字典
    NSDictionary *dictionary6 = @{};
    //新语法创建只有一个键值对的字典
    NSDictionary *dictionary7 = @{@"name":@"Rick"};
    //新语法创建有多个键值对的字典
    NSDictionary *dictionary8 = @{@"name":@"Rick",@"age":@25,@"adderss":@"GZ"};


    //从本地读取字典
    NSDictionary *ditionary9 = [NSDictionary dictionaryWithContentsOfFile:@""];
    //从网络读取字典
    NSDictionary *dictionary10 = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@""]];

    //字典中键值对的数量
    NSUInteger count = dictionary4.count;

    //如何访问字典
    //通过‘key’访问字典中对应的值
    NSString *name = [dictionary4 objectForKey:@"name"];

    //新语法
    NSString *newname = dictionary4[@"name"];

    //如何遍历字典中所有的key/value
    //表示字典中所有的key

    NSArray *keysArray = dictionary4.allKeys;


    NSArray *valueArray = dictionary4.allValues;


    //使用for循环来打印 key = value
    for (int i = 0; i<dictionary4.count; i++) {
        NSLog(@"%@=%@",keysArray[i],valueArray[i]);

    }


    //forin
    for (NSString *key in keysArray) {
        NSLog(@"%@ = %@",key,dictionary4[key]);
    }

    //使用枚举器遍历
    NSEnumerator *enmerator = [keysArray objectEnumerator];
    id key;
    while (key = [enmerator nextObject]) {
        NSLog(@"%@ = %@",key,dictionary4[key]);
    }

    NSDictionary *dictionary = @{@"name":@"Rick",@"age":@25,@"address":@"GZ",@"name":@"Jack"};
    for (NSString *str in dictionary.allKeys) {
        NSLog(@"%@ = %@",str,dictionary[str]);
        }

//可变字典 NSMutableDictionary
//1.初始化方式
//创建一个空的字典
NSMutableDictionary *mDictionary1 = [NSMutableDictionary dictionary];

    //创建一个有一个键值对的可变字典
    NSMutableDictionary *mDictionary2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Rick",@"name",@25,@"age",@"GZ",@"address", nil];


    //通过另一个字典创建一个字典
    NSMutableDictionary *mDictionary3 = [NSMutableDictionary dictionaryWithDictionary:mDictionary3];
    //mDictionary4.allKeys;
    //mDictionary4.allValues;

    //可变字典独有的初始化方法
    NSMutableDictionary *mDictionary5 = [NSMutableDictionary dictionaryWithContentsOfFile:@""];


    //从本地读取字典
    NSMutableDictionary *mDictionary6 = [NSMutableDictionary dictionaryWithContentsOfFile:@""];

    //从网络读取字典
    NSMutableDictionary *mDictionary7 = [NSMutableDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@""]];

    //操作字典
    //增
      [mDictionary5 setValue:@"Rick" forKey:@"name" ];
      [mDictionary5 setValue:@25 forKey:@"age"];

// //改(如果原来的字典中已经有了akey这个键,那么这次新加的值就会覆盖原来关键(键)akey对应的值)
// [mDictionary5 setValue:@”Jack”forKey:@”name”];
mDictionary5[@”name”] = @”Leo”;

    //删除指定key 的对象
    [mDictionary5 removeObjectForKey:@"name"];

    //删除所有对象
    [mDictionary5 removeAllObjects];

    //找出相同值得键 将25改为字符串
    NSMutableDictionary *mDic8 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Rick",@"name1",@"GZ",@"address",@"Rick",@"name2",@"Rick",@"name3",@25,@"age", nil];


    NSArray *keysArray1 = mDic8.allKeys;
    for (NSString *key in  keysArray1) {
        NSString *string;

        if ([mDic8[key] isKindOfClass:[NSNumber class]]) {
            int a = [mDic8[key]intValue];
            mDic8[key] = [NSString stringWithFormat:@"%d",a];

        }
        else{
            string = mDic8[key];

            if ([string isEqualToString:@"Rick"]) {
                NSLog(@"key = %@",key)}
                }
             }
       NSLog(@"%@",mDic8[key]);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值