一、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
NSMutableDictionary是NSDictionary的子类
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访问元素