在Object C也提供了相似C#中的Array數組對象,在Object C中使用NSArray 來建立數組;可是在Object C中NSArray 只能存放對象類型的指針,不能存放int,char,double等基本數據類型。數組
一. 不可變數組對象ide
這個和以前的NSString有些相似,NSArray 可以建立不可變的數組對象。一旦初始化這個對象就不能動態的修改和增長這個數組。學習
(1)使用arrayWithObjects來初始化數組內容,參考以下代碼:spa
NSArray *items=[NSArray arrayWithObjects:@"abc",@"cdf"];
上面初始化了一個items數組對象,可是值得注意的是,這段代碼會報錯,在Object C中數組對象的建立有個特殊的地方,就是最後一個元素必須是nil,這意味着使用nil來標識數組對象的結束。正確的方式以下:指針
NSArray *items=[NSArray arrayWithObjects:@"abc",@"cdf",nil];
(2)可使用count方法來獲取數組的長度code
NSArray *items=[NSArray arrayWithObjects:@"abc",@"cdf",nil]; NSLog(@"%d",[items count]);
以上代碼獲得的值是2,仍是3呢,通常人都會認爲是3,可是這個數組的長度是2,上面已經提過了nil只是做爲一個結束標識符,並不能表明素組內容。如今修改代碼以下:對象
NSArray *items=[NSArray arrayWithObjects:@"abc",@"cdf",nil,nil]; NSLog(@"%d",[items count]);
獲得的數組長度仍然爲2,在第一個nil的位置就已經標識數組結束了,因此後面出現再多的數組元素都沒有做用。blog
(3)使用objectAtIndex來獲取某個索引位置的數組元素索引
NSLog(@"%@",[items objectAtIndex:0]);
以上代碼能夠得到素組對象items索引位置爲0的元素,可是必定要注意數組的長度,不然數組越界異常。ci
(4)使用for來遍歷數組元素
for(int i=0;i<[items count];i++){ NSLog(@"%@",[items objectAtIndex:i]); }
以上代碼和咱們平時使用遍歷數組的方式無異,基本都是這種狀況。可是for還有另一種使用方式,和C#中的foreach使用方式同樣。
for(NSObject *item in items){ NSLog(@"%@",item); }
二. 動態數組
(1)根據上面所描述的,大體能夠猜得出來動態數組類,和NSMutableString比較相似。咱們使用NSMutableArray來定義一個動態數組。並且NSMutableArray 還提供了一些方法動態像數組中添加元素,在NSMutableArray不用擔憂在添加元素的時候發生數組越界的問題,當NSMutableArray長度被佔滿以後會自動擴容。
NSMutableArray *mutItems=[NSMutableArray arrayWithCapacity:2];
咱們使用arrayWithCapacity來定義一個數組的容量。
(2)可使用addObject方法來向對象數組中添加元素,並且NSMutableArray和NSArray不同,不須要使用nil來介紹標識數組結束。NSMutableArray中一樣提供了count 方法來獲取數組的長度,這裏須要注意的是count和capacity 是不同的,count是獲取的實際長度,而capacity是可存放的長度。
NSMutableArray *mutItems=[NSMutableArray arrayWithCapacity:12]; [mutItems addObject:@"abc"]; [mutItems addObject:@"def"]; NSLog(@"%d",[mutItems count]);
若是往muItems中繼續添加元素,直到超過12個,muItems也不會報錯,並且count也會大於12,這也是NSMutableArray的優點所在。
(3)使用insertObject 在特定的位置添加元素
NSMutableArray *mutItems=[NSMutableArray arrayWithCapacity:2]; [mutItems addObject:@"abc"]; [mutItems addObject:@"def"]; [mutItems addObject:@"45454"]; NSLog(@"%d",[mutItems count]); [mutItems insertObject:@"wang" atIndex:1]; for (NSString *item in mutItems) { NSLog(@"%@",item); }
(4)刪除數組中的元素
- (void)removeObject:(id)anObject inRange:(NSRange)range;設置在必定範圍內刪除,若是在這個範圍內沒有匹配的元素則什麼都不刪除。
- (void)removeObject:(id)anObject;刪除指定元素
- (void)removeObjectsInArray:(NSArray *)otherArray;刪除數組中指定的元素
- (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;刪除指定索引位置的元素
NSRange range=NSMakeRange(0, 2); [mutItems removeObject:@"wang" inRange:range]; for (NSString *item in mutItems) { NSLog(@"----- %@",item); }
(5)替換數組元素內容
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject; 可使用這個方法來替換某個索引位置的元素
[mutItems replaceObjectAtIndex:1 withObject:@"FFFFFFFFFFFFFF"]; for(NSString *item in mutItems){ NSLog(@"************ %@",item); }
本文只是很初略的記錄了學習的一些經常使用方法,NSArray和NSMutableArray 還提供了大量的其餘方法,仍有待繼續努力學習和使用!