和上一篇文章一樣,數組的重要性不言而喻,在OC編程的過程中我們會不斷的使用到NSArray,和C語言不同的是,我們這裡的數組只能存OC對象類型,不能存C語言基本數據類型,也不能存NSNull類型,但是我們這裡的數組可以存多種對象類型,比如,在同一個數組裡面,既可以存字元串類型,又可以存對象化了以後的 ...
和上一篇文章一樣,數組的重要性不言而喻,在OC編程的過程中我們會不斷的使用到NSArray,和C語言不同的是,我們這裡的數組只能存OC對象類型,不能存C語言基本數據類型,也不能存NSNull類型,但是我們這裡的數組可以存多種對象類型,比如,在同一個數組裡面,既可以存字元串類型,又可以存對象化了以後的整數類型,甚至是另外一個數組,也可以存其他的對象類型(將C語言的數據類型轉換成OC的對象類型下麵會講到),不過在同一個數組裡面儘量存同一種數據類型,這是為了方便使用。在OC數組裡面以nil表示結尾,如果你在數組的中間存了一個nil的數據,那麼在nil後面的數據是讀取不到的。
和NSString一樣,數組可以分為可變數組(NSMutableArray)和不可變數組(NSArray),首先,我們還是從不可變數組說起,因為可變數組只是在不可變數組上加上了一些新的方法。
一、不可變數組
1.不可變數組的創建
2.訪問數組的對象個數可以使用count屬性,回憶一下,在字元串中訪問字元串的長度我們使用的是length屬性。
3.獲取某個對象的索引值使用方法:indexOfObject
4.獲取某個索引值對應的對象使用方法:objectAtIndex
5.判斷數組是否包含某個對象使用方法:containsObject
6.獲取數組第一個元素:arr[0]
[arr objectAtIndex:0]
[arr firstObject]
7.獲取數組最後一個元素:[arr lastObject]
二、可變數組
可變數組相對於不可變數組和可變字元串相對於不可變字元串類似,都增加了一些方法和屬性,最主要的就是增、刪、改、插入。
1.創建可變數組
2.向可變數組裡面增加一個對象使用方法:addObject
3.在可變數組裡面刪除對象:
[removeObject:@"xianggang"];
[ar removeObject:@"bj"];
[ar removeObjectAtIndex:1];
[ar removeAllObjects];
4.更換數組裡面的一個對象
[ar exchangeObjectAtIndex:0 withObjectAtIndex:1];
5.插入一個對象
[ar insertObject:@"bj" atIndex:1];
三、封裝(即類型轉換)
1.將C語言基本數據類型封裝為OC對象類型我們使用的是NSNumber;如:
NSNumber *number = [NSNumber numberWithInt:20];
NSNumber *number1 = [NSNumber numberWithFloat:20.0];
2.將C語言的結構體和枚舉封裝了OC對象類型需要使用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];