黑马程序员——NSDictionary和NSMutableDictionary的介绍及使用

来源:互联网 发布:魔兽世界7.0nga数据库 编辑:程序博客网 时间:2024/06/15 04:26

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


第一讲    NSDictionary的介绍及使用


NSDictionary介绍
1)什么是NSDictionary
NSDictionary翻译过来叫做”字典”
日常生活中, “字典”的作用: 通过一个拼音或者汉字, 就能找到对应的详细解释
NSDictionary的作用类似: 通过一个key(键), 就能找到对应的value(值)
NSDictionary是不可变的, 一旦初始化完毕, 里面的内容就无法修改

2)NSDictionary的创建
+ (instancetype)dictionary;
+ (instancetype)dictionaryWithObject:(id)object forKey:(id <NSCopying>)key; // objectForKey,根据键取值。
+ (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ...;

//创建一个字典,并且初始化key和value的值NSDictionary*dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",nil];NSLog(@"%@",dict2);
3)快速创建字典
@{@"zs" : @"zhangsan", @"ls" : @"lisi", @"ww" : @"Wangwu"};

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

NSDictionary基本使用方法
-(NSUInteger)count;
返回字典的键值对数目
-(id)objectForKey:(id)aKey;
根据key取出value

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

//快速创建字典NSDictionary *dict1 = @{@"zs":@"zhangsan",@"ls":@"lisi",@"ww":@"wangwu"};for(NSString *keyStr in dict3){      NSLog(@"%@",keyStr);}//此时这样遍历得到的是字典的所有的key//并没有得到key的值//想要得到值,还需要进一步调用方法for(NSString  *keystr in dict3){       NSLog(@"%@=%@",keystr,[dict3 objectForKey:keyStr]);}
2)Block遍历
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {}];
//快速创建字典NSDictionary *dict1 = @{@"zs":@"zhangsan",@"ls":@"lisi",@"ww":@"wangwu"};for(NSString *keyStr in dict3){      NSLog(@"%@",keyStr);}//此时这样遍历得到的是字典的所有的key//并没有得到key的值//想要得到值,还需要进一步调用方法for(NSString  *keystr in dict3){       NSLog(@"%@=%@",keystr,[dict3objectForKey:keyStr]);}//使用block遍历[dict3 enumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop){        NSLog(@"key--->%@=%@<---value",key,obj);}]

NSDictionary的简写形式
1)NSDictionary的创建
以前
[NSDictionary dictionaryWithObjectsAndKeys:@"Jack", @"name", @"男", @"sex", nil];
现在
@{@"name": @"Jack", @"sex" : @"男”};

2)NSDictionary获取元素
以前
[dict objectForKey:@"name”];
现在
dict[@"name”];

NSDictionary文件操作
将字典写入文件中
-(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];
把多个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(@"写入成功!");
从文件中读取字典到内存中
保存结果是xml文件格式,但苹果官方推荐为plist后缀。
把字典放到NSArray中,调用array的writeToFile
+ (id)dictionaryWithContentsOfFile:(NSString *)path;
+ (id)dictionaryWithContentsOfURL:(NSURL *)url;
NSDictionary使用注意
字典中的键不要重复。(虽然重复也不报错,会自动取在前面的那个)


第二讲   NSMutableDictionary介绍和使用

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

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

NSMutableDictionary简写形式
快速创建可变字典
dict.dictionary = @{@"name" : @"bob", @"age" : @"18"};

设置键值对
以前
[dict setObject:@"Jack" forKey:@"name”];
现在
dict[@"name"] = @"Jack";

NSDictionary和NSArray对比
NSArray和NSDictionary的区别
1> NSArray是有序的,NSDictionary是无序的
2> NSArray是通过下标访问元素,NSDictionary是通过key访问元素

NSArray的用法

1> 创建
@[@"Jack", @"Rose"] (返回是不可变数组)
2> 访问
id d = array[1];
3> 赋值
array[1] = @"jack";

NSDictionary的用法

1> 创建

@{ @"name" : @"Jack", @"phone" : @"10086" } (返回是不可变字典)

2> 访问
id d = dict[@"name"];
3> 赋值
dict[@"name"] = @"jack";

0 0