NSDictionary和NSMutableDictionary的基本用法

一、字典
1.NSDictionary: 字典,又叫键值对,字典通过 键(key) 与 值(value) 保存数据, 将键与值绑定在一起,二者必须成对出现
2.OC中字典分为: 
  NSDictionary:不可变字典,一旦初始化, 就不能修改
  NSMutableDictionary:可变字典,继承自NSDictionary
3.键值对的存储特点
    3.1 字典的数据存储, 键值必须一一对应, 同时键不允许重复(如果重复默认指使用第一个)
    3.2 键值对是散列数据, 是没有顺序的

4.在OC中,字典的打印是{},数组是()

二、NSDictionary 

//创建并初始化字典
NSDictionary * dict1 = [NSDictionary dictionaryWithObject:@"1" forKey:@"a"];
NSDictionary * dict2 = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1",@"2",@"3", nil] forKeys:[NSArray arrayWithObjects:@"a",@"b",@"c", nil]];
NSDictionary * dict3 = [[NSDictionary alloc] initWithObjectsAndKeys:@"Tom",@"name",@"男",@"sex", nil];
NSDictionary * dict4 = [NSDictionary dictionaryWithObjectsAndKeys:@"Tom",@"name",@"男",@"sex", nil];
NSDictionary * dict5 = @{@"1":@"a",@"2":@"b"};

//几组键值对
int count = (int)[dict2 count];

//取出key对应的value
NSString *value1 = [dict2 valueForKey:@"b"];
NSString *value2 = [dict2 objectForKey:@"b"];


//取出所有的key
NSArray *allKey = [dict2 allKeys];
//取出所有的value
NSArray *allVlues = [dict2 allValues];

//根据key取出对应的value,如果key不存在,就打印notFoundMarker
NSArray *array = [dict2 objectsForKeys:[NSArray arrayWithObjects:@"a",@"b",@"d", nil] notFoundMarker:@"not found"];

//直接遍历字典
for (NSString *key in dict2) {
	NSLog(@"%@ = %@",key,[dict2 objectForKey:key]);
}

//使用NSEnumerator遍历
NSEnumerator *en = [dict2 keyEnumerator];
id key = nil;
while (key=[en nextObject]) {
	NSLog(@"%@ = %@",key,[dict2 objectForKey:key]);
}

//使用block遍历
[dict2 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL * stop) {
       NSLog(@"%@---%@",key,obj);
}];

//NSDictionary 的文件操作
+ (NSDictionary *)dictionaryWithContentsOfFile:(NSString *)path;
+ (NSDictionary *)dictionaryWithContentsOfURL:(NSURL *)url;
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
注意:字典读写是 xml 文件,苹果官方推荐为plist后缀

三、NSMutableDictionary

//创建可变字典
NSMutableDictionary *dict1 = [[NSMutableDictionary alloc] init];
NSMutableDictionary *dict2 = [NSMutableDictionary dictionary];
//创建一个可变词典初始指定它的长度为10,动态的添加数据
//如果超过10这个词典长度会自动增加,推荐用这种方式
NSMutableDictionary *dict3 = [NSMutableDictionary dictionaryWithCapacity:10];

//添加键值对
[dict1 setObject:@"1" forKey:@"a"];
[dict1 setObject:@"2" forKey:@"b"];

//给key赋值
dict1[@"a"] = @"hello";

//删除所有键值对
[dict1 removeAllObjects];
//删除指定键值对
[dict1 removeObjectForKey:@"a"];
[dict1 removeObjectsForKeys:[NSArray arrayWithObjects:@"a",@"b", nil]];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值