OC中的NSDictionary(字典)

字典的基本概念

    OC中的字典(NSDictionaryNSMutableDictionary)是由键-值对组成的数据集合.正如,我们在字典里查找单词的定义一样.

    通过key(键),查找的对应的value(值),key通常是字符串对象,也可以是其他任意类型对象.在一个字典对象中,key的值必须是唯一的.

    此外,字典对象的键和值不可以为空(nil),如果需要在字典中加入一个空值,可以加入NSNull对象


字典中存储方式是无序的,因为字典是没有下标的!!!

字典中存储方式是无序的,因为字典是没有下标的!!!

字典中存储方式是无序的,因为字典是没有下标的!!!


NSDictionary(字典)

字典的初始化

key不要重复,重复了只识别第一个

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //不可变字典
        
        //只有一个键值对的字典初始化
        //将整数1转化成NSNumber类型,用a存放
        NSNumber *a = [NSNumber numberWithInt:1];
        //定义一个只有一个键值对的字典b,value值是"xiaoming", key值是a(其实就是1)
        NSDictionary *b = [NSDictionary dictionaryWithObject:@"xiaoming" forKey:a];
        NSLog(@"%@", b);
        
        //定义一个有多个键值对的字典
        NSDictionary *c = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];
        NSLog(@"%@", c);
        
    }
    return 0;
}



获取字典键值对的个数

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        
        //定义一个有多个键值对的字典
        NSDictionary *a = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];

        //使用[a count]获取字典键值对的个数
        NSLog(@"%lu", (unsigned long)[a count]);
        
        
    }
    return 0;
}



根据字典里面的key  获取value

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        
        //定义一个有多个键值对的字典
        NSDictionary *a = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];
        
        //根据字典a里面的key@"two", 获取它"two"所对应的value值
        //使用 NSString 来接收!!!
        NSString *b = [a objectForKey:@"two"];
        
        NSLog(@"%@", b);
        
        
    }
    return 0;
}



拿到字典里面相同 value 的所有 key

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        
        //定义一个有多个键值对的字典
        NSDictionary *a = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaoming", @"two", @"xiaoqiang", @"three", @"xiaoming", @"four", nil];
        
        //拿到字典a里面所有valu是@"xiaoming"的key,新建一个数组b来存放
        NSArray *b = [a allKeysForObject:@"xiaoming"];
        
        NSLog(@"%@", b);
        
        
    }
    return 0;
}




NSMutableDictionary(可变字典)

可变字典的初始化 及 赋值

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //可变字典的初始化
        //方法1)给可变字典a初始化了一个空间
        NSMutableDictionary *a = [[NSMutableDictionary alloc]initWithCapacity:10];
        NSLog(@"%@", a);
        //方法2)给可变字典a初始化了一个空间
        NSMutableDictionary *c = [NSMutableDictionary dictionary];
        NSLog(@"%@", c);
        //a,c打印都是空的
        
        
        
        //给可变字典b添加了多个键值对
        NSMutableDictionary *b = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", @"xiaogang", @"four",nil];
        
        NSLog(@"%@", b);
  
    }
    return 0;
}




向可变字典添加一个字典

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //向可变字典添加一个字典
        
        //新建一个可变字典a
        NSMutableDictionary *a=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];
        //新建一个可变字典b
        NSDictionary *b = [NSDictionary dictionaryWithObject:@"xiaogang" forKey:@"four"];
        //将b字典添加到a字典里面
        //--------------字典里面是无序的,因为字典里面是没有下标的!!!-----------------
        [a addEntriesFromDictionary:b];
        
        NSLog(@"%@", a);
  
    }
    return 0;
}



设置字典字典的value

key一样更新value 

Key不一样添加键值对

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //设置可变字典中的value
        
        //新建一个可变字典a
        NSMutableDictionary *a=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];
        NSLog(@"%@", a);
        
        //通过可变字典a中的key@"one", 改变它所对应的value值
        [a setValue:@"xiaogang" forKey:@"one"];
        //打印出来:因为字典a里面有key@"one",所以key@"one"所对应的value变成了@"xiaogang"
        NSLog(@"%@", a);
        
        
        //因为字典a里面没有key@"four",所以新添加一个键值对
        [a setValue:@"xiaoliu" forKey:@"four"];
        //打印出来:在原有字典a里面新添加一个键值对four = xiaoliu;
        NSLog(@"%@", a);
  
    }
    return 0;
}




将字典里面的值全部设置成新值

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        NSMutableDictionary *a = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];
        
        NSMutableDictionary *b = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaogang", @"four", @"xiaoliu", @"five", nil];
        //将字典a里面的所有值全部设置成了b里面的值,相当于全部设置新值
        [a setDictionary:b];
        
        //打印出a里面是b的值,因为已经全部设置成了b的值
        NSLog(@"%@", a);
        
  
    }
    return 0;
}



根据key删除相对应的value,等于删除字典中这个元素

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        NSMutableDictionary *a = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];
        
        //根据字典a里面的key@"one", 删除相对应的value值,等于删除这个元素
        [a removeObjectForKey:@"one"];
        
        NSLog(@"%@", a);
        
  
    }
    return 0;
}



根据数组中的key,删除字典中相对应的所有value(等于删除这个元素)

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //根据数组中的key,删除字典中相对应的value(也就是元素)
        
        //新建一个可变字典a
        NSMutableDictionary *a = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", @"xianggang", @"four", @"xiaoliu", @"five", nil];
        //新建一个数组b,其中包含数组a里面的key
        NSArray *b = [NSArray arrayWithObjects:@"one",@"three",@"five", nil];
        //根据数组b里面的key,删除字典a中相对应的value(也就是元素)
        [a removeObjectsForKeys:b];
        
        NSLog(@"%@", a);
        
  
    }
    return 0;
}




删除字典中所有的元素

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //删除字典中所有的元素
        
        //新建一个可变字典a
        NSMutableDictionary *a = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", @"xianggang", @"four", @"xiaoliu", @"five", nil];
        
        //删除字典中所有的元素
        [a removeAllObjects];
        
        NSLog(@"%@", a);
        
  
    }
    return 0;
}




转载于:https://my.oschina.net/LBBB/blog/650640

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值