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