日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NSDictionary

發布時間:2025/7/25 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 循環

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];for (int i = 0; i < [dic count]; i++) {NSLog(@"%@ = %@", [[dic allKeys] objectAtIndex:i], [dic objectForKey:[[dic allKeys] objectAtIndex:i]]); }
  • 11.2 for...in 循環

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];// 遍歷所取出的為 key for(id key in dic){NSLog(@"%@ = %@", key, [dic objectForKey:key]); }
  • 11.3 Block 遍歷

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];[dic enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {NSLog(@"%@ = %@", key, obj); }];
  • 11.4 迭代器遍歷

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];// key 迭代器 NSEnumerator *keyEnumer = [dic keyEnumerator];id key = nil; while (key = [keyEnumer nextObject]) {NSLog(@"%@ = %@", key, [dic objectForKey:key]); }// 對象迭代器 NSEnumerator *objEnumer = [dic objectEnumerator];id obj = nil; while (obj = [objEnumer nextObject]) {NSLog(@"%@", obj); }

12、字典排序

  • 12.1 用指定的方法排序

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", @"value3", @"key3", @"value4", @"key4", nil];// 先對 key 進行排序,再遍歷數組 id keys1 = [dic keysSortedByValueUsingSelector:@selector(compare:)];for (id key in keys1) {NSLog(@"%@ = %@", key, dic[key]); }
  • 12.2 用 Block 排序

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", @"value3", @"key3", @"value4", @"key4", nil];id keys2 = [dic keysSortedByValueUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {return [obj1 compare:obj2]; }];for (id key in keys2) {NSLog(@"%@ = %@", key, dic[key]); }

轉載于:https://www.cnblogs.com/CH520/p/9410430.html

總結

以上是生活随笔為你收集整理的NSDictionary的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。