NSDictionary
生活随笔
收集整理的這篇文章主要介紹了
NSDictionary
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
其他用法
addEntriesFromDictionary用法
前言
- 字典只能存儲 OC 對象,不能存儲 C 語言中的基本數據類型,也不能存儲 nil 。字典中的鍵必須是單值的,通常它們是字符串。
- 字典對象是無序的,第一個放到詞典中的鍵-對象對并不一定是第一個取出。
- Xcode 7 對系統中常用的一系列容器類型都增加了泛型支持(),有了泛型后就可以指定容器類中對象的類型了。
- 假如向泛型容器中加入錯誤的對象,編譯器會報警告。
- __covariant:協變性,子類型可以強轉到父類型(里氏替換原則)。
- __contravariant:逆變性,父類型可以強轉到子類型。
- 不指定泛型類型的對象可以和任意泛型類型轉化,但指定了泛型類型后,
- 兩個不同類型間是不可以強轉的,假如你希望主動控制轉化關系,就需要使用泛型的協變性和逆變性修飾符。
1、不可變字典的創建
// 直接創建不可變字典// 字典中的 key 和 value 成對出現 NSDictionary *dic1 = @{@"key1":@"value1", @"key2":@"value2"};// 對象方法創建NSDictionary *dic2 = [[NSDictionary alloc] init];// 和 dic1 的地址不相同 NSDictionary *dic3 = [[NSDictionary alloc] initWithDictionary:dic1];NSDictionary *dic4 = [[NSDictionary alloc] initWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil]; NSDictionary *dic5 = [[NSDictionary alloc] initWithObjects:@[@"value1", @"value2", @"value3",] forKeys:@[@"key1", @"key2", @"key3"]];// 類方法創建 NSDictionary *dic6 = [NSDictionary dictionary];// 和 dic1 的地址不相同 NSDictionary *dic7 = [NSDictionary dictionaryWithDictionary:dic1];NSDictionary *dic8 = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil]; NSDictionary *dic9 = [NSDictionary dictionaryWithObject:@"value1" forKey:@"key1"]; NSDictionary *dic10 = [NSDictionary dictionaryWithObjects:@[@"value1", @"value2", @"value3",] forKeys:@[@"key1", @"key2", @"key3"]];// 從 文件 創建字符串NSString *path = [NSHomeDirectory() stringByAppendingString:@"/Desktop/test.txt"];NSDictionary *dic11 = [[NSDictionary alloc] initWithContentsOfFile:path]; NSDictionary *dic12 = [NSDictionary dictionaryWithContentsOfFile:path];// 從 Url 創建字符串/* file:// 文件前綴 */NSURL *url = [NSURL URLWithString:[@"file://" stringByAppendingString:[NSHomeDirectory() stringByAppendingString:@"/Desktop/test.txt"]]];NSDictionary *dic13 = [[NSDictionary alloc] initWithContentsOfURL:url]; NSDictionary *dic14 = [NSDictionary dictionaryWithContentsOfURL:url];// 泛型創建NSDictionary<NSString *, NSNumber *> *dic15 = @{@"key1":@3, @"key2":@5};2、字典中元素個數的計算
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];NSUInteger length = [dic count];3、通過 key 找對應的 value
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];// 通過 key 找對應的 value NSLog(@"%@", [dic objectForKey:@"key1"]);// 以下標的方式找 key 找對應的 value NSLog(@"%@", dic[@"key2"]);// key 沒有對應的 value 時用 notFoundMarker 參數代替 NSArray *arr = [dic objectsForKeys:@[@"key1", @"key1", @"key3"] notFoundMarker:@"not-Found"];4、通過 value 找對應的 key
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", @"value2", @"key3", nil];NSLog(@"%@", [dic allKeysForObject:@"value2"]);5、字典中所有 key 的獲取
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];NSLog(@"%@", [dic allKeys]);6、字典中所有 value 的獲取
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];NSLog(@"%@", [dic allValues]);7、可變字典 NSMutableDictionary 的創建
// 對象方法創建// 創建指定長度的字典,預先分配空間,提高效率,實際長度可大于指定長度 NSMutableDictionary *dic1 = [[NSMutableDictionary alloc] initWithCapacity:0];// 類方法創建// 創建指定長度的字典,預先分配空間,提高效率,實際長度可大于指定長度 NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithCapacity:0];8、字典中鍵值對的追加
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", nil];// 向字典末尾追加一個元素(key 值為新增的,若 key 值已存在則為修改對應的 value 值) [dic setObject:@"value2" forKey:@"key2"];// 向字典末尾追加一個字典 NSDictionary *dicAdd = @{@"key3": @"value3"}; [dic addEntriesFromDictionary:dicAdd];9、字典中元素的刪除
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", @"value3", @"key3", @"value4", @"key4", nil];// 刪除指定的 key 對應的 value 和 key 值 [dic removeObjectForKey:@"key3"];// 刪除所有的 value 和 key 值 [dic removeAllObjects];10、字典中元素的修改
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", @"value3", @"key3", @"value4", @"key4", nil];// 修改已存在的鍵值(key 值為已經存在的,若 key 值為新增的則為追加對應的 value 值) [dic setObject:@"value5" forKey:@"key1"];// 修改整個字典(覆蓋重寫) NSDictionary *dic1 = @{@"key10":@"value10"}; [dic setDictionary:dic1];11、字典遍歷
11.1 for 循環
11.2 for...in 循環
11.3 Block 遍歷
11.4 迭代器遍歷
12、字典排序
12.1 用指定的方法排序
12.2 用 Block 排序
轉載于:https://www.cnblogs.com/CH520/p/9410430.html
總結
以上是生活随笔為你收集整理的NSDictionary的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: es-04-mapping和settin
- 下一篇: MongoDB部署副本集