和上一篇文章一樣,數(shù)組的重要性不言而喻,在OC編程的過(guò)程中我們會(huì)不斷的使用到NSArray,和C語(yǔ)言不同的是,我們這里的數(shù)組只能存OC對(duì)象類(lèi)型,不能存C語(yǔ)言基本數(shù)據(jù)類(lèi)型,也不能存NSNull類(lèi)型,但是我們這里的數(shù)組可以存多種對(duì)象類(lèi)型,比如,在同一個(gè)數(shù)組里面,既可以存字符串類(lèi)型,又可以存對(duì)象化了以后的整數(shù)類(lèi)型,甚至是另外一個(gè)數(shù)組,也可以存其他的對(duì)象類(lèi)型(將C語(yǔ)言的數(shù)據(jù)類(lèi)型轉(zhuǎn)換成OC的對(duì)象類(lèi)型下面會(huì)講到),不過(guò)在同一個(gè)數(shù)組里面盡量存同一種數(shù)據(jù)類(lèi)型,這是為了方便使用。在OC數(shù)組里面以nil表示結(jié)尾,如果你在數(shù)組的中間存了一個(gè)nil的數(shù)據(jù),那么在nil后面的數(shù)據(jù)是讀取不到的。

  和NSString一樣,數(shù)組可以分為可變數(shù)組(NSMutableArray)和不可變數(shù)組(NSArray),首先,我們還是從不可變數(shù)組說(shuō)起,因?yàn)榭勺償?shù)組只是在不可變數(shù)組上加上了一些新的方法。

一、不可變數(shù)組

1.不可變數(shù)組的創(chuàng)建

2.訪問(wèn)數(shù)組的對(duì)象個(gè)數(shù)可以使用count屬性,回憶一下,在字符串中訪問(wèn)字符串的長(zhǎng)度我們使用的是length屬性。

3.獲取某個(gè)對(duì)象的索引值使用方法:indexOfObject

4.獲取某個(gè)索引值對(duì)應(yīng)的對(duì)象使用方法:objectAtIndex

5.判斷數(shù)組是否包含某個(gè)對(duì)象使用方法:containsObject

6.獲取數(shù)組第一個(gè)元素:arr[0]

           [arr objectAtIndex:0]

           [arr firstObject]

7.獲取數(shù)組最后一個(gè)元素:[arr lastObject]

二、可變數(shù)組

  可變數(shù)組相對(duì)于不可變數(shù)組和可變字符串相對(duì)于不可變字符串類(lèi)似,都增加了一些方法和屬性,最主要的就是增、刪、改、插入。

1.創(chuàng)建可變數(shù)組

2.向可變數(shù)組里面增加一個(gè)對(duì)象使用方法:addObject

3.在可變數(shù)組里面刪除對(duì)象:

  [removeObject:@"xianggang"];

        [ar removeObject:@"bj"];

        [ar removeObjectAtIndex:1];

        [ar removeAllObjects];

4.更換數(shù)組里面的一個(gè)對(duì)象

  [ar exchangeObjectAtIndex:0 withObjectAtIndex:1];

5.插入一個(gè)對(duì)象

  [ar insertObject:@"bj" atIndex:1];

三、封裝(即類(lèi)型轉(zhuǎn)換)

1.將C語(yǔ)言基本數(shù)據(jù)類(lèi)型封裝為OC對(duì)象類(lèi)型我們使用的是NSNumber;如:

NSNumber *number = [NSNumber numberWithInt:20];

NSNumber *number1 = [NSNumber numberWithFloat:20.0];

2.將C語(yǔ)言的結(jié)構(gòu)體和枚舉封裝了OC對(duì)象類(lèi)型需要使用NSValue;如:

struct CGRect{

          CGPoint point;

          CGSize size;

        };

 

 struct CGPoint {

 

         CGFloat x;

 

         CGFloat y;

 

         };

 

         

 

        struct CGSize {

 

            CGFloat width;

 

            CGFloat height;

 

        };

 

         */

 

        CGRect rect = CGRectMake(100, 100, 200, 150);

 

        NSValue *rectValue = [NSValue valueWithRect:rect];