黑馬程式員_OC學習筆記之Foundation框架組合類

來源:互聯網
上載者:User

標籤:style   com   使用   資料   string   os   

                                 

 

                 OC--集合類

 

1.OC集合類包括NSArray,NSSet,NSDictionary都是以物件導向的方式運算元組,而且OC數組不像C語言中的數組只能存放同一種資料類型,它可以存放任意類型的對象,但是不能存放非OC物件類型如基礎資料型別 (Elementary Data Type)int,struct,enum等

 

2.OC數組是以對象的方式存在,因此在建立的時候需要為建立的對象前面加*

 

3.NSArray數組一旦建立就決定了是不是可變,而且永遠是可變或不可變

 

4.NSArray數組和子類NSMutableArray的基本操作:

 

    1>使用NSArray的類方法arry建立個數組,建立時定義為空白數組,那麼array數組將永遠是空數組

    NSArray *array = [NSArray array];

 

    2>建立數組對象有兩種方式:

 

    NSArray *array = [NSArray arrayWithObjects:@"Jack",nil];

    // 數組中包含了兩個NSString對象 nil是用來標識數組元素結束的標識

    // 因此OC數組中不能存放Null 物件

    NSArray *array1 = [NSArrayarrayWithObjects:@"Jack",@"Rose", nil];

 

    // 第二種方式:

    NSArray *array2 = @[@"Jack",@"Rose"];

 

    // 擷取數組的長度 array1.count;

    NSUInteger count = [array1 count];

    NSLog(@"%ld",count);

    // 訪問數組中的對象的兩種方式

    NSString *str1 = [array1 objectAtIndex:0]; //數組中索引為1的對象,OC中提供的方法 返回:Jack

    NSString *str2 = array1[0];                //編譯器特性其實還是轉為上面的形式來訪問 返回:Jack

 

5.遍曆數組的三種方式

    1>普通方式:

    for (int i = 0; i<array1.count; i++)

    {

        NSLog(@"%@",array1[i]); // 數組中存放的是對象可以用%@輸出

        if (i ==0)

        {

            break;

        }

    }

 

    2>將array1數組中的每個對象拿出來賦給obj然後依次列印

    for (id obj in array1)

    {    // id obj 代表數組中的對象

        // 擷取obj對象在數組中的索引

        NSUInteger index = [array1 indexOfObject:obj];

        NSLog(@"%ld--%@",index,obj);

    }

 

 

    3>使用Block 每次從數組中遍曆一個元素後就傳遞給block,block也相應的執行一次

    // block中的id obj對應數組中的元素,NSUInteger idx對應數組中元素的索引 BOOL用來停止遍曆

    [array1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)

     {

        

        NSLog(@"%ld--%@",idx,obj);

        

        // 如果索引為0 立即停止遍曆

        if (idx ==0)

        {

            *stop = YES;

        }

     };

6.NSMutableArray的基本操作:

 

     1>建立可變數組:

     

    NSMutableArray *mutableArray = [NSMutableArray array];

 

    NSMutableArray *mutalbeArray2 = @[@"張三",@"李斯"];  注意:@[]返回的是不可變NSArray數組 這樣會報錯

      // 為可變數組增加任意對象

    Person *person = [[Person alloc] init];

    [mutableArray addObject:person];

    [mutableArray addObject:@"Jack"];

    [mutableArray addObject:@"John"];

    // [mutableArray addObject:10]; 數組中不可以存放基礎資料型別 (Elementary Data Type)

    // 從數組中刪除指定的元素

    [mutableArray removeObject:@"John"];

    [mutableArray removeObjectAtIndex:0];

    // 將數組中的元素全部刪除

    [mutableArray removeAllObjects];

 

7.NSSet數組和子類NSMutableSet的基本操作:NSSet和NSArray都是不可變數組,一旦建立就無法改變。NSSet是無序的集合簡單操作

 

     1>建立NSSet集合:

     

    NSSet *set = [NSSet set]; // 一旦建立為空白永遠為空白

    NSSet *set2 = [NSSet setWithObjects:@"Jack",@"Rose",@"Jim",nil];

 

    // 隨機擷取NSSet集合中的元素

    NSString *str = [set2 anyObject];

    NSLog(@"%@",str);

 

    NSMutableSet的簡單操作:

 

    // 建立可變set集合

    NSMutableSet *mutableSet = [NSMutableSet set];

 

    // 為set添加集合

    [mutableSet addObject:@"Jack"];

    [mutableSet addObject:@"Rose"];

 

    // 刪除元素

    [mutableSet removeObject:@"Jack"];

 

 

 

8.NSArray和NSSet數組的對比:

     1>都是可以存放任意類型的OC對象的集合,都不能存放基礎資料型別 (Elementary Data Type)

     

     2>本身都是不可變的,但是子類都是可變的

     

     3>NSArray是有序的集合,NSSet是無序的集合

 

9.NSDictionary和NSMutableDictionary:

 

     1>NSDictionary和它的子類NSMutableDictionary都是以key/value的形式存在,NSDictionary本身為不可變集合

     

     2>NSDictionary也是無序集合

     

     3>字典集合中儲存的值是以索引值對的形式存在,如果存在相同的key那麼後面key的值會被覆蓋。但是允許vaule的重複

10.NSDictionary的基本操作

 

     1>常見建立Dictionary集合的四種方式

 

    // 1.建立一個空的字典集合類型

    NSDictionary *dic = [NSDictionary dictionary];// 一旦為空白 永久為空白

 

    // 2.建立只有一組值的字典集合

    NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@"Jack" forKey:@"name"];

 

    // 3.建立多個值的字典集合

    NSArray *keys = @[@"name",@"address",@"e-mail"];

    NSArray *values = @[@"Jack",@"北京",@"[email protected]"];

    NSDictionary *dic3 = [NSDictionary dictionaryWithObjects:values forKeys:keys];

 

    // 4.通過值/鍵的方式來建立

    NSDictionary *dic4 = [NSDictionary dictionaryWithObjectsAndKeys:

                          @"Jack",@"name",

                          @"北京",@"address",

                          @"[email protected]",@"e-mail",nil];

 

    // 5.類似於數組的建立方式

    NSDictionary *dic5 = @{@"name":@"Jack",

                           @"address":@"北京",

                           @"e-mail":@"[email protected]"};

 

    // 取值:根據相應的Key取出對應的值

    NSString *name = [dic1 objectForKey:@"name"];// 返回 Jack

    // 返回索引值對的個數

    NSUInteger count = dic5.count; // 返回 4

 

11.遍曆NSDictionary數組用兩種方式:

    1>

    NSArray *allKeys = [dic5 allKeys]; // 擷取的鍵在數組中是無序的

 

    for (int i = 0; i < dic5.count; i++)

    {

        NSString *key = allKeys[i];

        NSString *value = dic5[key];

        NSLog(@"%@-->%@",key,value);

    }

 

    2> 將字典中的索引值對傳遞給Block中的key和obj

    [dic5 enumerateKeysAndObjectsUsingBlock:^(idkey, id obj, BOOL *stop)

     {

        NSLog(@"%@-->%@",key,obj);

             // 遍曆一次立即停止 *stop = YES;

     };

 

 

12.NSMutableDictionary的基本操作:

 

    1>建立可變字典

    NSMutableDictionary *mutableDic = [NSMutableDictionary dictionary];

    NSMutableDictionary *mutableDic2 [email protected]{@"name",@"Rose",@"address",@"北京"}; 錯誤的寫法因為右邊返回的是不可變的字典

     

    2>為可變字典添加元素

    [mutableDic setObject:@"Rose" forKey:@"name"];

    [mutableDic setObject:@"北京"forKey:@"address"];

     

    3>移除

    [mutableDic removeAllObjects];

    [mutableDic removeObjectForKey:@"name"];

     

    4>列印

    NSLog(@"%@",mutableDic);

 

                      

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.