OC中Foundation框架之NSDictionary、NSMutableDictionary
NSDictionary概述
NSDictionary的作用类似:通过一个key ,就能找到对应的value
同样 NSDictionary是不可变的,一旦初始化完毕,里面的内容就无法修改
NSDictionary创建
+(instancetype) dictionary;
+(instancetype)dictionaryWithObject:(id) object forKey:(id<NSCopying>)key;//objectForKey,根据键取值
+(instancetype)dictionaryWithObjectsAndKeys:(id)firstObject,...; 例:
先值,后key 自动组成一对,另外类似java的map 存入后的数据时无序的
[NSDictionary dictionaryWithObjectAndKeys:@"张三",@"zs",@"李四",@"ls",nil]; 快速创建字典
NSDictionary *dictator =@{@"zs":@"zhangsan",@"ls":@"lisi",@"ww":@"wangwu"}; 注意:key值不能重复,在java中key重复时,会覆盖value,而oc中key重复则不会存入;
NSDictionary的基本使用
//返回字典的键值对数目
-(NSUInteger)count;
//根据key取出value
-(id)objectForKey:(id)aKey;
NSDictionary的遍历
使用增强型for循环
for(NSString *str in NSDictionary){
NSString *ss =[ dic objectForKey:str]
NSLog(@"%@ --->%@",str,ss);
} 使用block进行遍历
[ns enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@---->%@",key,id);
}]
NSDictionary的文件操作
将NSDictionary写入文件中
-(BOOL)writeToFile:(NSString *)path atomically:(BOOL) useAuxiliaryFile ;
-(BOOL) writeToURL:(NSURL *)url atomically:(BOOL) atomically; 例:
//写入文件
NSDictionary *dictator=@{@"zs":@"zhangsan",@"ls":@"lisi",@ww":@wanggu"}; [dict3 writeToFile:@"/Users/liwei/Desktop/dict.plist" atomically:YES]; //读取文件
NSDictionary *dict4=[NSDictionary dictionaryWithContentsOfFile:@"/Users/liwei/Desktop/dict.plist"]
NSMutableDictionary概述
什么是NSMutableDictionary
NSMutableDictionary 是NSDictionary得子类
NSDictionary是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素
NSMutableDictionary 是可变的,可以随时往里面添加、更改、删除元素
NSMutableDictionary常用方法
添加一个键值对(会把aKey之前对应的值给替换掉)
-(void)setObject :(id) anObject forKey:(id <NSCopying>)aKey;
通过aKey删除对应的value
-(void)removeObjectForKey:(id)aKey;
通过aKey删除对应的value
-(void)removeAllObjects;
删除所有的键值对
NSMutableDictionary简写形式
NSMutableDictionary *dict =[NSMutableDictionary dictionary];
//快速创建字典
dict.dictionary = @{@"name":@"bbb",@"age":@""};
//添加值到Dicitonary中
[dict setObject:@"man" forKey:@"sex"];
//查看字典内容
NSLog(@"%@",dict);
NSDictionary与NSArray对比
区别:
)NSArray是有序的,NSDictionary是无序的
)NSArray是通过下标访问元素,NSDictionary是通过key访问元素 NSArray的用法
)创建
@[@"java",@"rose"](返回是不可变数组)
)访问
id d =array[];
)赋值
array[]=@"jack"; NSDictionary的用法
)创建
@{@"name";@"jack",@"phone":@""}(返回是不可变字典)
)访问
id d =dict[@"name"];
)赋值
dict[@"name"]=@"jack";
OC中Foundation框架之NSDictionary、NSMutableDictionary的更多相关文章
- OC中Foundation框架之NSString、NSMutableString
创建方式 )直接赋值 NSString *str =@"abc"; )创建对象 NSString *str2 = [[NSString alloc]init]; str2 =@&q ...
- OC中Foundation框架
框架的概念 框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的组合,以便使研发程序变的更容易在OS X下地Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架称为Foundation框架 ...
- OC中Foundation框架之NSArray、NSMutableArray
NSArray概述 NSArray是OC中的数组类 NSArray特点 )只能存放任意OC对象,并且是有顺序的 )不能存放非OC对象,比如int/float/double/char/enum/stru ...
- Foundation框架--字典( NSDictionary NSMutableDictionary )
基础知识 1.字典不允许相同的key,但允许有相同的value. 2,字典是无序的,字典不能排序. 3.字典里的内容是成对存在的,不会出现单数. 4.快速创建的方式只适合不可变字典. 不可变字典 #i ...
- 黑马程序员——OC语言Foundation框架 (2) NSArray NSSet NSDictionary\NSMutableDictionary
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)NSArray 1>NSArray :不可变数组 ①创建方法 ...
- OC - 7.Foundation框架的简单介绍
OC语言-07-OC语言-Foundation框架 结构体 NSRange/CGRange 用来表示一个元素在另一个元素中的范围,NSRange等价于CGRange 包含两个属性: NSUInte ...
- 黑马程序员——OC语言Foundation框架 NSArray NSSet NSDictionary\NSMutableDictionary
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一) NSNumber 将各种基本数据类型包装成NSNumber对象 @ ...
- [OC Foundation框架 - 10] NSDictionary
通过唯一的key找到相应的value,类似于Map NSDictionary是不可变的 1.创建 void dicCreate() { //Immutable // NSDictionary *d ...
- Objective-C:Foundation框架-常用类-NSMutableDictionary
直接上代码吧: #import <Foundation/Foundation.h> @interface Student : NSObject @property (nonatomic, ...
随机推荐
- JavaScript实现常见排序算法
列表 冒泡排序 选择排序 插入排序 快速排序 希尔排序 归并排序 冒泡排序 // 输入:[5, 6, 3, 4, 8, 0, 1, 4, 7] // 输出:[0, 1, 3, 4, 4, 5, 6, ...
- quartz笔记
首先网络上的很多教程经常有错(信息过载了),其主要原因是版本发生了变化,例如quartz1和2之间还是有不少差别的,导致查找资料的人浪费了不少时间.所以无论教程如何写,都建议读者首先学习官网的教程,如 ...
- lsb_release 命令找不到
yum install redhat-lsb -y 参考:http://blog.chinaunix.net/uid-20606164-id-3485376.html
- (Facebook开源项目)Fresco:一个新的Android图像处理类库
在Facebook的Android客户端上快速高效的显示图片是非常重要的.然而多年来,我们遇到了很多如何高效存储图片的问题.图片太大,而设备太小.一个像素点就占据了4个字节数据(分别代表R G B和a ...
- iwebshop里面传数组且输出
//php后台 $starttimestr = $arr[0]['forea_time']; $endtimestr = $arr[0]['end_time']; $data['starttime'] ...
- 个人作业2——英语学习APP案例分析
一.个人体验 1.下载并使用,描述最简单直观的个人第一次上手体验. ①入眼界面华丽,有正能量的名言警句配上很有意境的图片,界面美观. ②内容丰富,有许多精选英文文章,同时配有中文翻译,便于理解. ③能 ...
- c/c++程序员的技术栈
在当今的互联网时代, java, 安卓, ios, 大行其道,而c/c++却显得越来越落寞. 其实这并不是c/c++程序员本身的问题,而是这是一个产品快速响应市场的年代.用过c/c++的人都知道, ...
- display与visibility的使用(区别)
display:none;隐藏元素,且此元素无物理位置: visibility:hidden;隐藏元素,但元素的物理位置依然存在: 因为display:none导致页面上无此元素的空间,js就获取不到 ...
- 解决tomcat debug 调试时间过长的问题
做java web很早就碰到一个问题,eclipse 的调试有时候忽然启动时间奇慢 ,但是正常启动速度没问题,其他项目也完全正常 后来想想也不影响项目运行,也没太在意 不过今天又碰到这问题了,而且启动 ...
- opencv构建高斯卷积核
关于高斯核函数可以参见阮一峰老师的日志:高斯模糊的算法 如何使用高斯核进行高斯模糊可以参见我的另一篇日志:opencv构建自定义卷积 Mat Gaussian_kernal(int kernel_si ...