OC 字典和集合的常用用法

 

 首先說幾個OC裏快速生成對象的幾個方法(即語法糖):

(1) @ + 數字  即快速將基本數據類型轉換爲NSNumber類型的對象,如:@20, (@後面直接跟了一個確切的數字) 如果是一個變量即 int a = 10 ,則爲:@(a)

(2)  數組對象 =  @ + [ ](中括號裏的內容時對象), 快速創建數組對象 例如:NSArray *arr =  @[@"name",@"number",@22,@7];  這樣創建的數組是不可改變的數組

(3) 數組名 + [下標]  快速獲取數組下標對應的元素, 如: arr[1] 就是獲取數組arr中的第二個元素number


  一, 字典

字典: 也是一個大容器,用來存儲多個數據,而且存儲的數據具有一一對應關係,(使用key來標識value值) ,字典裏的key是唯一的,一個key只能對應一個value,但是一個value可以對應多個key.對於字典的一對鍵值對(即key-value)叫做字典的一個元素,也叫做一個條目,它存儲的內容不限制對象類型,但是隻能用來存儲對象同時字典是無序的,

       

   (一), 不可改變字典    NSDictionary   

這裏以下的例子都以

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Lili",@"name",@20,@"height",@12,@"age", nil];

        NSLog(@"%@",dic); 爲例,不再贅述


1,創建字典對象

        1),便利構造器     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,求字典元素個數  count  其實  count  這個方法在數組裏,在字典裏,在集合裏都有,並且都是用來計算相應容器(數組,字典,集合等)的元素個數

        NSUInteger  count = [dic count];

        NSLog(@"%lu",count);

      

3,獲取所有的key     allKeys

        NSArray *keys = [dic allKeys];

        NSLog(@"%@",keys);

       

 4,根據key獲取對應的value    objectForKey:  返回值爲字符串對象  這裏objectForKey後面沒有加s 說明只是取出其中的一個元素,而不是全部,即體現了OC裏方法名的見名知意,我們在學習過程中可以根據方法名大概猜測出方法的實現內容

        NSString *name = [dic objectForKey:@"name"];

        NSLog(@"%@",name);

        NSNumber *age = [dic objectForKey:@"age"];

        NSLog(@"%@",age);

        NSNumber *height = [dic objectForKey:@"height"];

        NSLog(@"%@",height);

 

 下面一個例子是把字典裏的key的對應值都取出來存在一個數組裏  allValues  返回值是數組對象

        NSArray *values = [dic allValues];

        NSLog(@"%@",values);

       

5,字典快速遍歷;

       forin在遍歷數組時,遍歷的是數組中的每個元素, 在對字典快速遍歷時,遍歷的是字典中的key,然後通過key獲取對應的value值  因此forin 裏type對應的類型是key對應的對象類型

        for (NSString *dic1 in dic) {

           //檢索到key時,通過objectForKey:獲取對應的value值

            NSLog(@"%@",[dic objectForKey:dic1]);

        }

       

 

 

(二),可改變字典        NSMutableDictionary

       

1,創建字典對象

       

        便利構造器  dictionaryWithObjectsAndKeys:

        NSMutableDictionary *mudic =[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Lili",@"name1",@"Frank",@"name2",@12,@"age1",@14,@"age2", nil];

       

       

2,求字典元素個數  count

        NSLog(@"%lu",[mudic count]);

 

       

3,刪除元素  removeObjectForKey:  給定一個key值刪除對應的value值,

                   removeAllObjects 刪除所有條目

        [mudic removeObjectForKey:@"name2"];

        NSLog(@"%@",mudic);

        [mudic removeAllObjects];

        NSLog(@"%@",mudic);

 

       

4,添加元素    setObject: forKey:

        [mudic setObject:@"Duke"forKey:@"name3"];

        NSLog(@"%@",mudic);

 

       

       

 5,修改key對應的value   setObject: forKey:  跟添加元素是同一個方法

        在這裏setObject:forKey: 根據指定的key查找是否有對應的value如果沒有就添加進去即添加元素,若存在該key對應的value則將其修改爲指定的value值,即修改對應的value

        [mudic setObject:@"Frank"forKey:@"name3"];

        NSLog(@"%@",mudic);

 


      (三)NSSet不可變集合

集合也是一個大容器,具有確定性,唯一性,無序性    .裏面可以存儲任何類型的對象   


1,創建一個集合對象

        (1)b便利構造器   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,獲取集合中的某個元素  anyObject 第一次隨機取出一個元素後,再多次取出,每次都和第一次取出的一樣

        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,獲取元素個數  count

        NSLog(@"%lu",[set1 count]);

   

       

4,判斷集合中是否包含某個對象  containsObject:


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

      


 

        (四),可改變集合   NSMutableSet

1,創建一個集合對象   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);

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章