iosOC不可变字典和可变字典
//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不可变字典和可变字典的更多相关文章
- Day 08 可变与不可变对象/列表与字典内置方法
目录 可变对象与不可变对象 可变对象 不可变对象 列表的内置方法 字典内置方法 可变对象与不可变对象 可变对象 对象指向的内存中的值会改变,当更改这个变量的时候,还是指向原来内存中的值,并且在原来的内 ...
- 关于:1.指针与对象;2.深浅拷贝(复制);3.可变与不可变对象;4.copy与mutableCopy的一些理解
最近对深浅拷贝(复制)做了一些研究,在此将自己的理解写下来,希望对大家有所帮助.本人尚处在摸索阶段,希望各位予以指正. 本文包括如下方向的探索: 1.指针与对象: 2.深/浅拷贝(复制): 3.可变/ ...
- python中的可变与不可变对象
Python中的可变对象和不可变对象 什么是可变/不可变对象 不可变对象,该对象所指向的内存中的值不能被改变.当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一 ...
- 可变与不可变类型数据,列表的copy方法
我们先来了解一下可变与不可变类型的数据 (1)可变类型:列表,字典(内存中的数据允许被修改) 不可变类型:数字,字符串,元组(内存中的数据不允许被修改) 接着我们通过一个实例来看一看可变与不可变类型数 ...
- Python中可变和不可变类型
可变类型 列表,字典,集合 不可变类型 数字,字符串,元组 这里的可变不可变,是指内存中的那块内容(value)是否可以被改变 不可变类型 数字 a = 1 b = 1 print(id(a), id ...
- Python数据类型的可变与不可变
首先,我们需要知道在python中哪些是可变数据类型,哪些是不可变数据类型.可变数据类型:列表list和字典dict:不可变数据类型:整型int.浮点型float.字符串型string和元组tuple ...
- Python小白学习之路(七)—【字典】【字典的功能】【布尔值】
字典(dict) 基本结构: d = {key1 : value1, key2 : value2 } dict = {'} key : value称为字典的键值对. 每个键 key和值value 之间 ...
- python中不可变数据类型和可变数据类型
在学习python过程中我们一定会遇到不可变数据类型和可变数据类型. 1.名词解释 以下所有的内容都是基于内存地址来说的. 不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址 ...
- python的可变与不可变数据类型
<python的可变与不可变数据类型> python与C/C++不一样,它的变量使用有自己的特点,当初学python的时候,一定要记住“一切皆为对象,一切皆为对象的引用”这句话,其 ...
- 可变、不可变数据类型和hash
一.可变和不可变数据类型 在python中,我们对数据类型除了分为数字类型.字符串类型.列表类型.元组类型.字典类型和集合类型外, 还有另外一种分类方式,我们给数据类型分为可变数据类型和不可变数据类型 ...
随机推荐
- sqlserver 优化相关
http://www.cnblogs.com/studyzy/archive/2008/11/24/1339772.html http://blog.csdn.net/dba_huangzj/arti ...
- fork()子进程与waitpid()
#!/usr/bin/perl use warnings; use strict; use POSIX ":sys_wait_h"; $SIG{CHLD} = sub{ my $p ...
- ftp服务器端的安装及配置
搭建过程 安装 vsftp 服务(yum 安装即可) 配置/etc/vsftpd/vsftpd.conf anonymous_enable=NO #禁止匿名登录 local_enable=YES ...
- php app版本升级的思路
用户端传递当前app的版本号,再根据机型和app_type ,查找数据库里的版本号 ,去比较 ... CREATE TABLE `common_versioninfo` ( `id` int(11) ...
- scala中java并发编程
Runnable/Callable 线程(Thread) Executors/ExecutorService Future 线程安全问题 示例:搜索引擎 解决方案 Runnable/Callable ...
- xss框架的一些想法
今天pybeef作为一个课程设计答辩完成了,向老师介绍了很多xss利用相关的场景和技术. 先说一下已经实现了什么, 1, 浏览器版本的判断 这方面只能判断IE和firefox 火狐判断只判断了user ...
- Java 序列化 对象序列化和反序列化
Java 序列化 对象序列化和反序列化 @author ixenos 对象序列化是什么 1.对象序列化就是把一个对象的状态转化成一个字节流. 我们可以把这样的字节流存储为一个文件,作为对这个对象的复制 ...
- idea代码调试debug篇
主要看图,看图一目了然. 断点的设定和eclipse一样,只要点一下就可以,下面是我设定的几个断点,再下面的三个窗口是用来调试代码的,这个和eclipse类似 调试常用的快捷键 F9 ...
- CentOS正确关机方法
1关机前准备 1.1观察系统使用状态 · 谁在线:who · 联网状态:netstat -a · 后台执行的程序:ps -aux 1.2通知在线使用者关 ...
- LeetCode OJ Remove Duplicates from Sorted Array II
Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For exampl ...