//key 和 value 都属于(id)对象类型

//key常用字符串NSString来表示

//存储数值型 一般可用 NSString

//int  age ->@(age)

//  [dic[name] intValue];

//   @()-->转成NSNumber 类型

//     intValue

//value可以使任意对象(NSString  NSArrray , dog  )

//NSDictionary 一旦创建不能修改增加删除

#pragma mark 字典的创建

NSDictionary * dic = [[NSDictionary alloc]initWithObjectsAndKeys:

@"value1",@"key1",

@"value2",@"key2",

@"value2",@"key3",nil];

NSLog(@"%@",dic);

NSDictionary * dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1", nil];

//用字典创建字典

NSDictionary * dic2 = [[NSDictionary alloc]initWithDictionary:dic];

NSLog(@"%@",dic2);

//xcode4.6

//格式: key : value 多个元素之间用,分隔

//用NSLog打印字典是不支持汉字的转码

// \U5bd2\U4ed2;

NSDictionary * dic3 =

@{@"key1":@"value1",

@"key2":@"value2",

@"key3":@"value3",

@"key4":@"value2"

};

#pragma mark 查看键的个数

NSUInteger  num = [dic2 count];

NSLog(@"%lu",num);

#pragma mark 通过key找value

NSString * str =  [dic3 objectForKey:@"key1"];

//xcode4.6

NSString * str2 = dic3[@"key2"];

NSLog(@"%@",str);

NSLog(@"%@",str2);

#pragma mark  获取所有key 所有value

NSArray * keyArray  =  [dic3 allKeys];

NSArray * valueArray = [dic3 allValues];

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

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

#pragma mark 查看一个value对应多个key

NSArray * array =  [dic3  allKeysForObject:@"value2"];

NSLog(@"%@",array);

#pragma mark 可变字典

#pragma mark 创建可变字典

NSMutableDictionary * mutDic = [[NSMutableDictionary alloc] init];

NSDictionary * dic4 =

@{@"key1":@"value1",

@"key2":@"value2",

@"key3":@"value3",

@"key4":@"value2"

};

NSMutableDictionary * mutDic2 = [[NSMutableDictionary alloc]initWithDictionary:dic4];

#pragma mark 增加

//key不重复是增加键值对

[mutDic2 setObject:@"value3"

forKey:@"key5"];

//保证Key不重复 key必须唯一

//通过查询key的obj 是否为 ==NULL

//        if ([mutDic2 objectForKey:@"key5"]== NULL) {

//

//        }

NSDictionary * dic5 = @{@"key_1":@"value1",

@"key_2":@"value2"};

[mutDic2 addEntriesFromDictionary:dic5];

NSLog(@"%@",mutDic2);

#pragma mark 删除

//通过key删除值

[mutDic2 removeObjectForKey:@"key_1"];

NSLog(@"%@",mutDic2);

NSArray * array2 = @[@"key_2",@"key2",@"key4"];

[mutDic2 removeObjectsForKeys:array2];

NSLog(@"%@",mutDic2);

//        [mutDic2 removeAllObjects];

//        NSLog(@"%@",mutDic2);

#pragma mark 修改

//key 已存在是修改当前value的值

[mutDic2 setObject:@"hhhh" forKey:@"key1"];

NSLog(@"%@",mutDic2);

//完全覆盖掉当前字典中所有的值

[mutDic2 setDictionary:dic2];

NSLog(@"%@",mutDic2);

}

iosOC不可变字典和可变字典的更多相关文章

  1. Day 08 可变与不可变对象/列表与字典内置方法

    目录 可变对象与不可变对象 可变对象 不可变对象 列表的内置方法 字典内置方法 可变对象与不可变对象 可变对象 对象指向的内存中的值会改变,当更改这个变量的时候,还是指向原来内存中的值,并且在原来的内 ...

  2. 关于:1.指针与对象;2.深浅拷贝(复制);3.可变与不可变对象;4.copy与mutableCopy的一些理解

    最近对深浅拷贝(复制)做了一些研究,在此将自己的理解写下来,希望对大家有所帮助.本人尚处在摸索阶段,希望各位予以指正. 本文包括如下方向的探索: 1.指针与对象: 2.深/浅拷贝(复制): 3.可变/ ...

  3. python中的可变与不可变对象

    Python中的可变对象和不可变对象 什么是可变/不可变对象 不可变对象,该对象所指向的内存中的值不能被改变.当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一 ...

  4. 可变与不可变类型数据,列表的copy方法

    我们先来了解一下可变与不可变类型的数据 (1)可变类型:列表,字典(内存中的数据允许被修改) 不可变类型:数字,字符串,元组(内存中的数据不允许被修改) 接着我们通过一个实例来看一看可变与不可变类型数 ...

  5. Python中可变和不可变类型

    可变类型 列表,字典,集合 不可变类型 数字,字符串,元组 这里的可变不可变,是指内存中的那块内容(value)是否可以被改变 不可变类型 数字 a = 1 b = 1 print(id(a), id ...

  6. Python数据类型的可变与不可变

    首先,我们需要知道在python中哪些是可变数据类型,哪些是不可变数据类型.可变数据类型:列表list和字典dict:不可变数据类型:整型int.浮点型float.字符串型string和元组tuple ...

  7. Python小白学习之路(七)—【字典】【字典的功能】【布尔值】

    字典(dict) 基本结构: d = {key1 : value1, key2 : value2 } dict = {'} key : value称为字典的键值对. 每个键 key和值value 之间 ...

  8. python中不可变数据类型和可变数据类型

    在学习python过程中我们一定会遇到不可变数据类型和可变数据类型. 1.名词解释 以下所有的内容都是基于内存地址来说的. 不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址 ...

  9. python的可变与不可变数据类型

    <python的可变与不可变数据类型>     python与C/C++不一样,它的变量使用有自己的特点,当初学python的时候,一定要记住“一切皆为对象,一切皆为对象的引用”这句话,其 ...

  10. 可变、不可变数据类型和hash

    一.可变和不可变数据类型 在python中,我们对数据类型除了分为数字类型.字符串类型.列表类型.元组类型.字典类型和集合类型外, 还有另外一种分类方式,我们给数据类型分为可变数据类型和不可变数据类型 ...

随机推荐

  1. Java的设计模式----strategy(策略模式)

    设计模式: 一个程序员对设计模式的理解: “不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开 ...

  2. js replace(a,b)之替换字符串中所有指定字符的方法

    var str = 'abcadeacf'; var str1 = str.replace('a', 'o'); alert(str1); // 打印结果: obcadeacf var str2 = ...

  3. Xcode好用的插件(随时更新)

    古人云"工欲善其事必先利其器",打造一个强大的开发环境,是立即提升自身战斗力的绝佳途径!下面简单介绍下插件是什么.如何使用Xcode插件以及一些常用的Xcode插件的推荐. 一.插 ...

  4. 图片的 base64 编码

    图片的 base64 编码就是将一幅图片编码成一串字符串,使用该字符串代替图像地址.我们所看到的网页上的图片,都是需要消耗一个 http 请求下载而来的:(所有才有了 csssprites 技术< ...

  5. SNS

    SNS,专指社交网络服务.也指社交现有已成熟普及的信息载体,如短信SMS服务.SNS的另一种常用解释:全称Social Network Site,即“社交网站”或“社交网”.SNS也指Social N ...

  6. 浅谈position: absolute和position:relative

    一.在此先说一下文档流的概念: 1,文档流定义: 百度百科定义:文档流是文档中可显示对象在排列时所占用的位置. 大多网友的理解:元素的位置由元素在 (X)HTML 中的位置决定.将窗体自上而下分成一行 ...

  7. 在家用机上搭建 Git https 服务器

    今天主要叙述在家里台式机的虚拟机上搭建支持 https 的 ubuntu git 服务器. 实际上,从一个用户请求家里 git 服务器代码,最终完成代码的传输,主要是通过以下的过程: 首先,从外界寻找 ...

  8. 利用H5新特性判断文件大小

    HTML代码部分: 思路:下面代码中我利用css的z-index属性将input="file”标签隐藏在了id=btnSelect元素下面,通过触发a标签的点击后,弹出文件选择框.下面的ma ...

  9. 《JS权威指南学习总结--6.5枚举属性》

    内容要点: 一.for/in循环 1.for/in循环可以在循环体中遍历对象中所有可枚举的属性(包括自有属性和继承的属性),把属性名称赋值给循环变量.对象继承的内置方法不可枚举,但在代码中给对象添加的 ...

  10. ios空模板配置

    ios之Xcode6如何手动创建空工程模板 1.首先创建Single View Application 2.然后找到工程目录->Supporting Files ——>找到 info.pl ...