和上一篇文章一樣,數(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];
浙公網(wǎng)安備 33010602011771號(hào)