溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

字典和集合的常用用法

發(fā)布時(shí)間:2020-06-21 12:10:59 來源:網(wǎng)絡(luò) 閱讀:473 作者:li你不知道 欄目:開發(fā)技術(shù)

首先說幾個(gè)OC里快速生成對(duì)象的幾個(gè)方法(即語法糖):
(1) @ + 數(shù)字  即快速將基本數(shù)據(jù)類型轉(zhuǎn)換為NSNumber類型的對(duì)象,如:@20, (@后面直接跟了一個(gè)確切的數(shù)字) 如果是一個(gè)變量即 int a = 10 ,則為:@(a)
(2)  數(shù)組對(duì)象 =  @ + [ ](中括號(hào)里的內(nèi)容時(shí)對(duì)象), 快速創(chuàng)建數(shù)組對(duì)象 例如:NSArray *arr =  @[@"name",@"number",@22,@7];  這樣創(chuàng)建的數(shù)組是不可改變的數(shù)組
(3) 數(shù)組名 + [下標(biāo)]  快速獲取數(shù)組下標(biāo)對(duì)應(yīng)的元素, 如: arr[1] 就是獲取數(shù)組arr中的第二個(gè)元素number


  一, 字典
字 典: 也是一個(gè)大容器,用來存儲(chǔ)多個(gè)數(shù)據(jù),而且存儲(chǔ)的數(shù)據(jù)具有一一對(duì)應(yīng)關(guān)系,(使用key來標(biāo)識(shí)value值) ,字典里的key是唯一的,一個(gè)key只能對(duì)應(yīng)一個(gè)value,但是一個(gè)value可以對(duì)應(yīng)多個(gè)key.對(duì)于字典的一對(duì)鍵值對(duì)(即key-value)叫 做字典的一個(gè)元素,也叫做一個(gè)條目,它存儲(chǔ)的內(nèi)容不限制對(duì)象類型,但是只能用來存儲(chǔ)對(duì)象同時(shí)字典是無序的,
       
   (一), 不可改變字典    NSDictionary   
這里以下的例子都以
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Lili",@"name",@20,@"height",@12,@"age", nil];
        NSLog(@"%@",dic); 為例,不再贅述

1,創(chuàng)建字典對(duì)象
        1),便利構(gòu)造器     dictionaryWithObjectsAndKeys:
        NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Lili",@"name",@20,@"height",@12,@"age", nil];
        NSLog(@"%@",dic);

        2),初始化方法     initWithObjectsAndKeys:
        NSDictionary *dic1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"Lili",@"name",@20,@"height",@12,@"age", nil];
        NSLog(@"%@",dic1);
 
2,求字典元素個(gè)數(shù)  count  其實(shí)  count  這個(gè)方法在數(shù)組里,在字典里,在集合里都有,并且都是用來計(jì)算相應(yīng)容器(數(shù)組,字典,集合等)的元素個(gè)數(shù)
        NSUInteger  count = [dic count];
        NSLog(@"%lu",count);
      
3,獲取所有的key     allKeys
        NSArray *keys = [dic allKeys];
        NSLog(@"%@",keys);
       
 4,根據(jù)key獲取對(duì)應(yīng)的value    objectForKey:  返回值為字符串對(duì)象  這里objectForKey后面沒有加s 說明只是取出其中的一個(gè)元素,而不是全部,即體現(xiàn)了OC里方法名的見名知意,我們?cè)趯W(xué)習(xí)過程中可以根據(jù)方法名大概猜測(cè)出方法的實(shí)現(xiàn)內(nèi)容
        NSString *name = [dic objectForKey:@"name"];
        NSLog(@"%@",name);
        NSNumber *age = [dic objectForKey:@"age"];
        NSLog(@"%@",age);
        NSNumber *height = [dic objectForKey:@"height"];
        NSLog(@"%@",height);
 
 下面一個(gè)例子是把字典里的key的對(duì)應(yīng)值都取出來存在一個(gè)數(shù)組里  allValues  返回值是數(shù)組對(duì)象
        NSArray *values = [dic allValues];
        NSLog(@"%@",values);
       
5,字典快速遍歷;
       forin在遍歷數(shù)組時(shí),遍歷的是數(shù)組中的每個(gè)元素, 在對(duì)字典快速遍歷時(shí),遍歷的是字典中的key,然后通過key獲取對(duì)應(yīng)的value值  因此forin 里type對(duì)應(yīng)的類型是key對(duì)應(yīng)的對(duì)象類型
        for (NSString *dic1 in dic) {
           //檢索到key時(shí),通過objectForKey:獲取對(duì)應(yīng)的value值
            NSLog(@"%@",[dic objectForKey:dic1]);
        }
       
 
 
(二),可改變字典        NSMutableDictionary
       
1,創(chuàng)建字典對(duì)象
       
        便利構(gòu)造器  dictionaryWithObjectsAndKeys:
        NSMutableDictionary *mudic =[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Lili",@"name1",@"Frank",@"name2",@12,@"age1",@14,@"age2", nil];
       
       
2,求字典元素個(gè)數(shù)  count
        NSLog(@"%lu",[mudic count]);
 
       
3,刪除元素  removeObjectForKey:  給定一個(gè)key值刪除對(duì)應(yīng)的value值,
                   removeAllObjects 刪除所有條目
        [mudic removeObjectForKey:@"name2"];
        NSLog(@"%@",mudic);
        [mudic removeAllObjects];
        NSLog(@"%@",mudic);
 
       
4,添加元素    setObject: forKey:
        [mudic setObject:@"Duke"forKey:@"name3"];
        NSLog(@"%@",mudic);
 
       
       
 5,修改key對(duì)應(yīng)的value   setObject: forKey:  跟添加元素是同一個(gè)方法
        在這里setObject:forKey: 根據(jù)指定的key查找是否有對(duì)應(yīng)的value如果沒有就添加進(jìn)去即添加元素,若存在該key對(duì)應(yīng)的value則將其修改為指定的value值,即修改對(duì)應(yīng)的value
        [mudic setObject:@"Frank"forKey:@"name3"];
        NSLog(@"%@",mudic);
 

      (三)NSSet不可變集合
集合也是一個(gè)大容器,具有確定性,唯一性,無序性    .里面可以存儲(chǔ)任何類型的對(duì)象   

1,創(chuàng)建一個(gè)集合對(duì)象
        (1)b便利構(gòu)造器   setWithObjects:
        NSSet *set1 = [NSSet setWithObjects:@"1",@"2",@"3",@"4",@"age1",@14,@"age2", nil];
        NSLog(@"%@",set1);
       
        (2)初始化方法  initWithObjects:
        set1 = [[NSSetalloc] initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];
        NSLog(@"%@",set1);
       
       
       
2,獲取集合中的某個(gè)元素  anyObject 第一次隨機(jī)取出一個(gè)元素后,再多次取出,每次都和第一次取出的一樣
        NSString *set = [set1 anyObject];
        NSLog(@"%@",set);
        NSString *set5 = [set1 anyObject];
        NSLog(@"%@",set5);
        NSString *set2 = [set1 anyObject];
        NSLog(@"%@",set2);
        NSString *set3 = [set1 anyObject];
        NSLog(@"%@",set3);
        NSString *set4 = [set1 anyObject];
        NSLog(@"%@",set4);
       
       
       
3,獲取元素個(gè)數(shù)  count
        NSLog(@"%lu",[set1 count]);
   
       
4,判斷集合中是否包含某個(gè)對(duì)象  containsObject:

        NSLog(@"%d",[set1 containsObject:@"1"]);
       

 
        (四),可改變集合   NSMutableSet
1,創(chuàng)建一個(gè)集合對(duì)象   setWithObjects:
        NSMutableSet * muset  = [NSMutableSet setWithObjects:@"1",@"2",@"3",@"4",@"age1",@14,@"age2", nil];
 
       
1,添加元素    addObject:
        [muset addObject:@"88"];
        NSLog(@"%@",muset);
       
       
2,刪除元素   removeObject:
        [muset removeObject:@"88"];
        NSLog(@"%@",muset);
  

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI