OC字典

OC字典

字典定义:OC中的字典是关键字(key)及其定义(value)所构成的集合。字典在给定的关键字下存储一个元素,这个关键字(key)通常是一个Nssting类型的字符串,存储的这个元素可以是OC中的任意类型的对象。对于字典就是通过健(key)来访问Value(必须是对象)。
PS:字典存储相对于数组的优势:由于字典的访问方式是通过键值来进行访问,所以在数据量巨大或频繁查询的时候,使用字典会节省大量的运算,效率更高。

不可变字典:NSDictionary

NSDictionary *dic=[[NSDictionary alloc]init];//实例化初始化
NSDictionary *dic1=[NSDictionary dictionary];//类方法初始化
//创建一个键值对的字典
NSDictionary *dic2=[NSDictionary dictionaryWithObject:@”rick” forKey:@”name”];
NSDictionary *dic3=[NSDictionary dictionaryWithObjectsAndKeys:@”rick”,@”name”,@”pig”,@”22”, nil];//value在前 key在后
//字典中存放的元素都要是对象类型,如果是要存放基本类型,需要先对基本类型进行封装,然后再放入字典中
NSDictionary *dic4=[NSDictionary dictionaryWithDictionary:dic3];//字典创建字典
//新语法创建字典
NSDictionary *dic5=@{};
//新语法创建一个键值对的字典,快速创建字典时,key在前,value在后,使用@{},键值对之间用冒号“:”区分key和value,不同键值对用逗号“,”分隔
NSDictionary *dic6=@{@”name”:@”rick”};
NSDictionary *dic7=@{@”stu1”:@”wang”,@”stu2”:@”li”};
//从本地文件中读取字典
NSDictionary *dic8=[NSDictionary dictionaryWithContentsOfFile:@”“];
//从网络获取字典
NSDictionary *dic9=[NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@”“]];
//字典中键值对的数量
NSInteger count=[dic7 count];
//如何访问字典,通过key访问字典中的值,当不知道key对应的value的类型时,可用ID类型进行接受
NSString *str=[dic7 objectForKey:@”stu1”];
//新语法
NSString *newName=dic7[@”stu1”];
//如何遍历字典中所有的key和value
//表示字典中所有的key,循环遍历所有的键值对
NSArray *array=dic7.allKeys;//找到所有的KEY并放在一个数组中
NSArray *array2=dic7.allValues;//找到所有的value并放在一个数组中
for (int i=0; i

可变字典:NSMutableDictionary

//初始化
//创建一个空的字典
NSMutableDictionary *dic1=[[NSMutableDictionary alloc]init];
NSMutableDictionary *dic2=[NSMutableDictionary dictionary];
//创建一个键值对字典
NSMutableDictionary *dic3=[NSMutableDictionary dictionaryWithObject:@”jack” forKey:@”stu1”];
//多个键值对
NSMutableDictionary *dic4=[NSMutableDictionary dictionaryWithObjectsAndKeys:@”jack”,@”stu1”,@”tom”,@”stu2”, nil];
//通过一个字典创建一个字典
NSMutableDictionary *dic5=[NSMutableDictionary dictionaryWithDictionary:dic4];
//去字典中所有的键
NSArray *keyarray1=[dic4 allKeys];
NSArray *valueArray=dic4.allValues;
//独有的初始化方法
NSMutableDictionary *dic6=[NSMutableDictionary dictionaryWithCapacity:10];
//从本地读取字典
NSMutableDictionary *dic7=[NSMutableDictionary dictionaryWithContentsOfFile:@”“];
//从网络读取字典
NSMutableDictionary *dic8=[NSMutableDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@”www.baidu.com”]];
//字典操作
//增加
[dic6 setValue:@”jack” forKey:@”name”];
[dic6 setValue:@”tom” forKey:@”stu1”];
//改值(如果原来的字典中没有KEY 使用该方法是增加,否则则是改值)
[dic6 setValue:@”now” forKey:@”name”];//可直接使用设置value来进行改值(后面的值会直接覆盖前面的值)

   //新语法改值
    dic6[@"name"]=@"jik";

    //删除指定key的对象
    [dic6   removeObjectForKey:@"name"];
    //删除所有对象
    [ dic6 removeAllObjects];

    //创建一个有多个value值相同的数组
    NSMutableDictionary *dic9=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"jack",@"1",@25,@"age",@"rick",@"3",@"age",@"4",@"age",@"5", nil];
    //把值为NSNumber类型的value 转换成NSString类型
    NSArray *array=[dic9 allKeys];
    for (NSString *key in array) {
        NSString *string;
        if ([dic9[key] isKindOfClass:[NSNumber class]]) //判断当前的value是不是NSNumber类型
        {
            int age=[dic9[key] intValue];//拆包
            dic9[key]=[NSString stringWithFormat:@"%d",age];//把转换后的值用NSString格式输出
        }
        else
            string=dic9[key];
    }
    //找出相同值的键
    NSLog(@"%@",dic9);
    NSArray *array1=[dic9 allValues];
    for (int i=0; i<array.count; i++) {
        if ([array1[i] isEqualToString:@"age"])          {
            NSLog(@"%@",array[i]);
        }
    }
}
return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值