一. NSDictionary(不可变字典)
1. 只能存储对象,第一次存入对象以后就不能再作修改
2. 字典是无序的,也就是说存入字典的元素顺序不是它在内存里面的真实顺序,属于链表存储
3. 字典初始化
NSDictionary *dit0 = [[NSDictionary alloc] initWithObjects:@[@"A",@"B"] forKeys:@[@"1",@"2"]];
NSLog(@"%@",dit0[@"1"]);
NSDictionary *dit00 = [NSDictionary dictionaryWithObjects:@[@"a",@"b"] forKeys:@[@"1",@"2"]];
NSLog(@"%@",dit00[@"2"]);
NSDictionary *dit1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"C",@"3",@"D",@"4", nil];
NSLog(@"%@",dit1[@"3"]);
NSDictionary *dit11 = [NSDictionary dictionaryWithObjectsAndKeys:@"c",@"3",@"d",@"4", nil];
NSLog(@"%@",dit11[@"4"]);
NSDictionary *dit2 = [[NSDictionary alloc] initWithDictionary:dit0];
NSLog(@"%@",dit2[@"1"]);
NSDictionary *dit22 = [NSDictionary dictionaryWithDictionary:dit0];
NSLog(@"%@",dit22[@"2"]);
4. 字典的遍历
NSDictionary *dit = @{@"1":@"A",@"2":@"B",@"4":@"D",@"3":@"C",@"4":@"D",@"5":@"E",@"6":@"F"};
for (int i = 1; i < dit.count ; i++) {
NSString *key = [NSString stringWithFormat:@"%d",i];
NSLog(@"%@",dit[key]);
}
for (NSString *str in dit) {
NSLog(@"%@",dit[str]);
}
[dit enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@",dit[key]);
}];
[dit enumerateKeysAndObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@",dit[key]);
}];
5. 判断两个字典是否相等
NSDictionary *dit = @{@"1":@"A",@"2":@"B",@"4":@"D",@"3":@"C",@"4":@"D",@"5":@"E",@"6":@"F"};
if (![dit isEqualToDictionary:@{@"1":@"A",@"2":@"B"}]) {
NSLog(@"不相等");
}
6. 排序键值
NSDictionary *dit = @{@"1":@"A",@"2":@"B",@"4":@"D",@"3":@"C",@"4":@"D",@"5":@"E",@"6":@"F"};
NSArray *arr = [dit keysSortedByValueUsingSelector:@selector(compare:)];
NSLog(@"%@",arr);
7. 文件的读写
NSString *path = @"/Users/MAC_SJM/Desktop/data.plist";
NSDictionary *dit1 = [[NSDictionary alloc] initWithContentsOfFile:path];
NSLog(@"%@",dit1);
NSDictionary *dit2 = [NSDictionary dictionaryWithContentsOfFile:path];
NSLog(@"%@",dit2);
NSURL *url = [NSURL fileURLWithPath:@"/Users/MAC_SJM/Desktop/data.plist"];
NSDictionary *dit3 = [[NSDictionary alloc] initWithContentsOfURL:url];
NSLog(@"%@",dit3);
NSDictionary *dit4 = [NSDictionary dictionaryWithContentsOfURL:url];
NSLog(@"%@",dit4);
NSDictionary *dit = @{@"1":@"A",@"2":@"B",@"4":@"D",@"3":@"C",@"4":@"D",@"5":@"E",@"6":@"F"};
BOOL flag = [dit writeToFile:path atomically:YES];
if (flag) {
NSLog(@"写入成功");
} else {
NSLog(@"写入失败");
}
BOOL flag1 = [dit writeToURL:url atomically:YES];
if (flag1) {
NSLog(@"写入成功");
} else {
NSLog(@"写入失败");
}
二. NSMutableDictionary(可变字典)
1. NSMutableDictionary是NSDictionary的子类,继承大部分的方法
2. 可变数组的基本操作
NSMutableDictionary *dit = [NSMutableDictionary dictionary];
[dit setValue:@"hello world" forKey:@"0"];
NSLog(@"%@",dit);
NSDictionary *dit1 = @{@"1":@"A",@"2":@"B",@"4":@"D",@"3":@"C",@"4":@"D",@"5":@"E",@"6":@"F"};
[dit setValuesForKeysWithDictionary:dit1];
NSLog(@"%@",dit);
[dit removeObjectForKey:@"0"];
NSLog(@"%@",dit);
[dit removeObjectsForKeys:@[@"1",@"2"]];
NSLog(@"%@",dit);
[dit setValue:@"A" forKey:@"3"];
NSLog(@"%@",dit);
dit[@"4"] = @"B";
NSLog(@"%@",dit);