NSDictionary 和NSMutableDictionary介绍

一、NSDictionary
1、NSDictionary是什么?

NSDictionary 就是一个字典是一种键值对应的数据集合
NSDictionary的作用类似: 通过一个key(键), 就能找到对应的value(值) NSDictionary是不可变的, 一旦初始化完毕, 里面的内容就无法修改

2、NSDictionary的用法

- (NSUInteger)count; 返回字典的键值对数目
- (id)objectForKey:(id)aKey; 根据key取出value

3、键值对集合的特点

1. 字典存储的时候,必须是"键值对"的方式来存储(同时键不要重复) 
2. 键值对中存储的数据是"无序的".
3. 键值对集合可以根据键, 快速获取数据.

4、NSDictionary遍历方法

1)快速遍历
for (NSString *key in dict) { }

2)Block遍历
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { }];

5、NSDictionary文件操作

1、写入
1.1、将字典写入文件中
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
写入一个字典数据
//快速创建字典
NSDictionary *dict3 = @{@"zs" : @"zhangsan", @"ls" : @"lisi", @"ww" : @"Wangwu"}; ;
//将字典写入到文件中
[dict3 writeToFile:@"/Users/liwei/Desktop/dict.plist" atomically:YES];

1.2、把多个dict加到array中调用array的writeToFile方法。
//快速创建字典
NSDictionary *dict2 = @{@"x" : @"xyz", @"a" : @"abc", @"d" : @"def"};
NSDictionary *dict3 = @{@"zs" : @"zhangsan", @"ls" : @"lisi", @"ww" : @"Wangwu"}; ;
NSArray *arr = @[dict2,dict3];
//将数组写入到文件中
[arr writeToFile:@"/Users/liwei/Desktop/dict.plist" atomically:YES]; NSLog(@"写入成功!");

2、从文件中读取字典到内存中
+ (id)dictionaryWithContentsOfFile:(NSString *)path; 保存结果是xml文件格式,但苹果官方推荐为plist后缀。 把字典放到NSArray中,调用array的writeToFile
+ (id)dictionaryWithContentsOfURL:(NSURL *)url;


注意:字典中的键不要重复。(虽然重复也不报错,会自动取在前面的那个)

二、NSMutableDictionary
1、什么是NSMutableDictionary

NSMutableDictionaryNSDictionary的子类
NSDictionary是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的 元素, 也不能再往里面添加元素
NSMutableDictionary是可变的, 随时可以往里面添加\更改\删除元素

2、NSMutableDictionary常用方法

1、使用
- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey; 添加一个键值对(会把aKey之前对应的值给替换掉)
- (void)removeObjectForKey:(id)aKey; 通过aKey删除对应的value
- (void)removeAllObjects; 删除所有的键值对

2、通过dictionary属性快速初始化一个NSMutableDictionary dict.dictionary = @{@"name" : @"bob", @"age" : @"18"};

总结:* NSArray和NSDictionary的区别
1> NSArray是有序的,NSDictionary是无序的
2> NSArray是通过下标访问元素,NSDictionary是通过key访问元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值