在编程中,字典就是关键字及其定义的集合,cocoa中有一个实现这种功能的集体类.NSDictionary。
NSDictionary。在给定的关键字(通常是一个NSString 字符串)下存储一个数值(可以是任意类型的对象)。然后就可以用这个关键字来查找相应的数值。
字典(也被称为散列表或关联数组)使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。对于频繁的查询和大型的数据集来说。使用字典比数组要快得多。
NSDictionary就像NSString和NSArray一样是不可变的对象。但是NSMutableDictionary类允许添加和删除字典元素。在创建新的NSDictionary时,就要提供该字典所存储的全部对象和关键字。开始学习使用字典最简单的方法就是用类方法dictionaryWithObjectsAndKeys:
不能在NSDictionary中存储nil值。
创建不可变的字典
//97是值,johnson是关键字。
NSDictionary *glossary=[NSDictionarydictionaryWithObjectsAndKeys:[NSNumbernumberWithInteger:97],@"nicky",[NSNumbernumberWithInteger:95],@"johnson",[NSNumbernumberWithInteger:90],@"black",[NSNumbernumberWithInteger:100],@"lily",nil];
NSLog(@"%@",glossary);
objectForKey:来获取字典中的值也就是查找对象:通过键查值。 不能值去查关键字。
//objectForkey 参数是关键字,返回的是值。
NSLog(@"%@",[glossary objectForKey:@"johnson"]);
可变字典 字典是不能插入的。
给字典添加元素:setObject:forkey;
删除指定的元素:removeObjectForkey;
*/
NSMutableDictionary *mGlossary=[NSMutableDictionary dictionary];//这个没有预估字典的个数。
[mGlossary setObject:[NSNumbernumberWithInteger:97]forKey:@"nicky"];
[mGlossary setObject:[NSNumbernumberWithInteger:95]forKey:@"johnson"];
[mGlossary setObject:[NSNumbernumberWithInteger:90]forKey:@"black"];
[mGlossary setObject:[NSNumbernumberWithInteger:100]forKey:@"lily"];
NSLog(@"%@",mGlossary);
[mGlossaryremoveObjectForKey:@"johnson"];//删除指定的对象。 NSLog(@"%@",mGlossary);
NSMutableDictionary *my=[NSMutableDictionarydictionaryWithCapacity:20];//预估字典的个数。
字典的枚举器:
//遍历字典中的所有对象。 取的是值。
// objectEnumerator 取字典里的对象 也就是值。
// 遍历字典中的对象用objectEnumerator ,遍历字典中的关键字用keyEnumerator
NSEnumerator *enumerator;
enumerator=[mGlossaryobjectEnumerator];
id obj;
while (obj=[enumerator nextObject])
{
NSLog(@"I found %@",obj);
}
遍历字典中的关键字。
NSEnumerator *enumerator1;
enumerator1=[mGlossarykeyEnumerator];
id obj1;
while (obj1=[enumerator1 nextObject])
{
NSLog(@"I found %@",obj1);
}
快速枚举;只能遍历关键字,不能遍历值。
for (id obj2 in mGlossary)
{
NSLog(@"I found %@",obj2);
}