Objective-C入门教程13:词典对象(NSDictionary和NSMutableDictionary)柳志超博客 ? Program ? Objective-C ? Objective-C入门教程13:词典对象(NSDictionary和NSMutableDictionary) posted in Objective-C on by liuzc词典(dictionary)顾名思义就是同由键-值组成的数据集合.与在词典中查找单词定义一样,可以通过对象的键从词典中获取需要的对象,看到这里,你是不是想起了java中的map?和NSArray一样,一个词典对象也能保存不同类型的值,词典也分别有不可变词典和可变的词典(NSDictionary与NSMutableDictionary),前者是线程安全的,后者不是 。 不可变词典NSDictionary[NSDictionary dictionaryWithObjectsAndKeys:..] : 使用键值对创建词典对象,结尾必需使用nil标志结束。 int main(int argc, const char * argv[]) { @autoreleasepool { NSDictionary* aboutme = [NSDictionary dictionaryWithObjectsAndKeys:@"Liuzhichao",@"name",@"24",@"age", nil]; //得到词典的键值对数量 NSLog(@"%lu", [aboutme count]); //将词典的所有key储存在NSEnumerator中 NSEnumerator *enumeratorKey = [aboutme keyEnumerator]; for (NSObject *object in enumeratorKey) { NSLog(@"key:%@", object); } //将词典的所有value储存在NSEnumerator中 NSEnumerator *enumeratorObject = [aboutme objectEnumerator]; for (NSObject *object in enumeratorObject) { NSLog(@"value:%@", object); } //打印词典中所有的键值对 for(NSString *key in aboutme){ NSLog(@"%@ : %@",key,[aboutme objectForKey:key]); } //通过传入key对象可以拿到当前key对应储存的值 NSLog(@"key name的值是:%@", [aboutme objectForKey:@"name"]); } return 0; } 可变的词典NSMutableDictionaryNSMutableDictionary是NSDictionary的子类,所以它继承了NSDictionary类的方法. int main(int argc, const char * argv[]) { @autoreleasepool { // 创建动态字典,初始化长度为5 NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithCapacity:5]; // 向字典中添加数据 [mutableDictionary setObject:@"obj1" forKey:@"key1"]; [mutableDictionary setObject:@"obj2" forKey:@"key2"]; [mutableDictionary setObject:@"obj3" forKey:@"key3"]; [mutableDictionary setObject:@"obj4" forKey:@"key4"]; [mutableDictionary setObject:@"obj5" forKey:@"key5"]; // 删除单个元素 [mutableDictionary removeObjectForKey:@"key4"]; // 增加一个元素,key3已经存在,会修改key3对应的值 [mutableDictionary setObject:@"obj33333" forKey:@"key3"]; // 打印可变字典中所有key NSLog(@"all keys: %@", [mutableDictionary allKeys]); // 打印可变字典中所有value NSLog(@"all values: %@", [mutableDictionary allValues]); } return 0; } 和数组不一样,词典对象是无序的,所以,当枚举词典时,第一个放到词典中的键-对象并不一定会第一个取出. |
|