字典是关键字及其定义的集合
NSDictionary能在给定得关键字key(通常是一个NSString字符串)下存储一个数值value(可以是任意类型的Objective-C对象),然后你就可以用这个关键字来查找相应的数据
字典(也被称为散列表或关键数组)使用的是键查询的优化方式,可以立即查找出查询的数据,而不需要遍历
- NSString *f1 = @"one";
- NSString *f2 = @"two";
- NSString *f3 = @"three";
- NSArray *key = @{@"1", @"2", @"3"};
- NSString *value = @{@"one", @"two", @"three"};
- //字典初始化的方法,一个key只有一个value,一个value可以有很多的key
- NSDictionary *f_nsd1 = [NSDictionary dictionaryWithObjectsAndKeys:f1, @"1", f2, @"2", f3, @"3" ,nil];
- NSDictionary *f_nsd2 = @{@"11" : f1, @"22" : f2, @"33" : f3};
- NSDictionary *f_nsdarr = [NSDictionary dictionaryWithObjects:value forKeys:key];
- //获取字典数量
- NSInteger count = [f_nsd1 count];
- //取值,如果字典没有所查找数据返回nil值
- NSString *f_key1 = [f_nsd1 objectForKey:@"1"];
- NSString *f_key2 = f_nsd2[@"11"];
- //排序
- NSArray *arrs=[f_nsd1 keysSortedByValueUsingSelector:@selector(compare:)];
- //获取所有key
- NSArray *keys = [f_nsd1 allKeys];
- //获取所有Value
- NSArray *values = [f_nsd1 allValues];
- //保存对象到内容文件
- NSString *path=@"/Users/apple/Desktop/test.plist";
- [f_nsd1 writeToFile:path atomically:YES];
- //从以前保存的文件读取到字典对象
- NSDictionary *data=[NSDictionary dictionaryWithContentsOfFile:path];
- //可变字典
- //向NSMutableDictionary 类发送dictionary消息,可以创建新的NSMutableDictionary对象
- //也可以使用dictionaryWithCapacity:创建限制大小的可变数组
- NSMutableDictionary *f_nsm = [NSMutableDictionary dictionary];
- [f_nsm setObject:f1 forKey:@"111"];
- [f_nsm setObject:f2 forKey:@"222"];
- [f_nsm setObject:f3 forKey:@"333"];
- //向字典里添加字典
- NSDictionary *f_nsd3 = [NSDictionary dictionaryWithObjects:@"four" forKeys:@"444"];
- [f_nsm addEntriesFromDictionary:f_nsd3];
- [f_nsm removeObjectForKey:@"333"]; //从字典里删除单个key的value
- //删除一组key的value
- NSArray *arrkeys = [NSArray arrayWithObjects:@"222", @"333", nil nil];
- [f_nsm removeObjectsForKeys:arrkeys];
- //删除所有value
- [f_nsm removeAllObjects];
- //快速枚举
- for (id key in f_nsm) {
- NSString *object = [f_nsm objectForKey:key];
- }
- //迭代枚举器
- NSEnumerator *enumerator = [f_nsm keyEnumerator];
- id key = [enumerator nextObject];
- while (key) {
- id objects = [f_nsm objectForKey:key];
- key = [enumerator nextObject];
- }
- //与NSArray一样,没有适合NSMutableDictionary的字面量初始化语法