NSMutableDictionary 和 NSDictionary的區別與用法大全
NSDictionary
初始化新字典,新字典包含otherDic
NSDictionary *dic = [NSDictionary dictionaryWithDictionary:otherDic];
以檔案內容初始化字典
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];
NSArray *objects=[NSArray arrayWithObjects:@"v1",@"v2",@"v3", nil];
NSArray *keys=[NSArray arrayWithObjects:@"k1",@"k2",@"k3", nil];
dic=[NSDictionary dictionaryWithObjects:objects forKeys:keys];
//類方法
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"沐風", @"name", @"呵呵", @"sex", @"金紫荊韓式鬆骨", @"address", @"呵呵", @"exo", nil];
//物件方法
// NSDictionary *dictionary = [[NSDictionary alloc]initWithObjectsAndKeys:@"沐風", @"name", @"呵呵", @"sex", @"金紫荊韓式鬆骨", @"address", nil];
//現在常用以下方法
// NSDictionary *dictionary = @{@"name":@"沐風", @"sex":@"呵呵", @"address":@"金紫荊韓式鬆骨",@"exo":@"呵呵"};
//建立空字典
// NSDictionary *dictionaty = [NSDictionary dictionary];
//得到詞典的數量
NSInteger count = [dictionary count];
NSLog(@"詞典的數量為: %ld",count);
//根據key查value
NSLog(@"%@", [dictionary objectForKey:@"name"]);
NSLog(@"%@", dictionary [@"name"]);
//根據value查詢key
NSLog(@"%@", [dictionary allKeysForObject:@"呵呵"]);
//得到詞典中所有KEY值
NSEnumerator * enumeratorKey = [dictionary keyEnumerator];
//快速列舉遍歷所有KEY的值
for (NSObject *object in enumeratorKey) {
NSLog(@"遍歷KEY的值: %@",object);
}
//得到詞典中所有Key值
NSLog(@"%@", dictionary.allKeys);//allkeys 屬性
//得到詞典中所有Value值
NSEnumerator * enumeratorValue = [dictionary objectEnumerator];
//快速列舉遍歷所有Value的值
for (NSObject *object in enumeratorValue) {
NSLog(@"遍歷Value的值: %@",object);
}
//得到詞典中所有Value值
NSLog(@"%@", dictionary.allValues);
//遍歷詞典中所有Value值
for (NSString *key in dictionary.allKeys ) {
NSLog(@"%@", [dictionary objectForKey:key]);
}
-
Block遍歷
[dict enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *obj, BOOL *stop) {
NSLog(@"key = %@, value = %@", key, obj);
}];
- 鍵值對集合的特點
- 字典儲存的時候,必須是"鍵值對"的方式來儲存(同時鍵不要重複)
- 鍵值對中儲存的資料是"無序的".
- 鍵值對集合可以根據鍵, 快速獲取資料.
NSDictionary檔案操作
-
將字典寫入檔案中
- - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
- - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
- 存結果是xml檔案格式,但蘋果官方推薦為plist字尾。
-
示例
NSDictionary *dict = @{@"name":@"lnj", @"phone":@"12345678", @"address":@"天朝"};
BOOL flag = [dict writeToFile:@"/Users/LNJ/Desktop/dict.plist" atomically:YES];
NSLog(@"flag = %i", flag);
- 從檔案中讀取字典
NSDictionary *newDict = [NSDictionary dictionaryWithContentsOfFile:@"/Users/LNJ/Desktop/dict.plist"];
NSLog(@"newDict = %@", newDict);
NSMutableDictionary
初始化一個空的可變字典
NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"key1",@"v2",@"key2",nil];
NSDictionary *dic3 = [NSDictionary dictionaryWithObject:@"v3" forKey:@"key3"];
向字典2物件中新增整個字典物件3
[dic2 addEntriesFromDictionary:dic3];
向字典2物件中最佳一個新的key3和value3
[dic2 setValue:@"value3" forKey:@"key3"];
初始化一個空的可變字典
NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];
將空字典1物件內容設定與字典2物件相同
[dic1 setDictionary:dic2];
將字典中key1對應的值刪除
[dic1 [email protected]"key1"];
NSArray *array = [NSArray arrayWithObjects:@"key1", nil];
根據指定的陣列(key)移除字典1的內容
[dic2 removeObjectsForKeys:array];
移除字典所有物件
[dic1 removeAllObjects];