概述
NSDictionary是关键字及其定义的集合。也被称为散列表或关联数组,它使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。在快速查找方面有很大优势。对于NSDictionary对象,一经创建就无法进行修改;若想进行修改,可以通过创建其子类NSMutableDictionary的对象。该篇主要讲述NSDictionary的使用。
常用API预览
- +dictionary 创建一个空的字典
- +dictionaryWithObjectsAndKeys: 列出字典的key-value创建字典,最后以nil结束
- +dictionaryWithContentsOfFile: 从文件中创建字
- +dictionaryWithContentsOfURL: 从URL从创建字典
+dictionaryWithDictionary: 从已有的字典创建字典
-count 获取字典中key-value的个数
- -allKeys 获取所有的key
- -allValues 获取所有的value
-objectForkey: 根据key查找value
-keyEnumerator: 获取包含一个所有key的Enumerator
- -objectEnumerator 获取包含所有value的Enumerator
-enumerateKeysAndObjectsUsingBlock:使用block遍历key和value
-writeToFile:atomically:写入文件
- -writeToURL:atomically:写入URL
练习
int main(int argc, const char * argv[])
{
// 创建一个NSDictionary对象
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: @"Goyaya", @"name", @"502105975", @"qq", nil];
// 获取key-value的对数
NSLog(@"count = %lu", dic.count);
// 获取所有key
NSLog(@"allKeys = %@", [dic allKeys]);
// 获取所有value
NSLog(@"allValues = %@", [dic allValues]);
// 使用keyEnumerator遍历, 获取的是key
NSEnumerator *enumerator = [dic keyEnumerator];
id item;
while ((item = enumerator.nextObject)) {
NSLog(@"%@ -> %@", item, [dic objectForKey: item]);
}
// 使用block遍历
[dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
NSLog(@"%@ -> %@", key, obj);
}];
// 写入文件
NSString *path = @"/Users/hskj/dic1.plist";
[dic writeToFile: path atomically: YES];
// 写入URL
NSURL *url = [NSURL URLWithString: @"file:///Users/hskj/dic2.plist"];
[dic writeToURL: url atomically: YES];
return 0;
}
注意事项
打开对应路径下的文件,它是有一定格式的:
我们通过+dictionaryWithContentsOfFile: 或+dictionaryWithContentsOfURL:创建字典时,也应该根据这个格式进行编写文件。