数组的简单方法
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
注:在Object C中使用NSArray 來(lái)創(chuàng)建數(shù)組;但是在Object C中NSArray 只能存放對(duì)象類型的指針,不能存放int,char,double等基本數(shù)據(jù)類型。
一. 不可變數(shù)組對(duì)象
這個(gè)和之前的NSString有些類似,NSArray 能夠創(chuàng)建不可變的數(shù)組對(duì)象。一旦初始化這個(gè)對(duì)象就不能動(dòng)態(tài)的修改和增加這個(gè)數(shù)組。
(1)使用arrayWithObjects來(lái)初始化數(shù)組內(nèi)容,參考如下代碼:
NSArray?*items=[NSArray?arrayWithObjects:@"abc",@"cdf"];上面初始化了一個(gè)items數(shù)組對(duì)象,但是值得注意的是,這段代碼會(huì)報(bào)錯(cuò),在Object C中數(shù)組對(duì)象的創(chuàng)建有個(gè)特殊的地方,就是最后一個(gè)元素必須是nil,這意味著使用nil來(lái)標(biāo)識(shí)數(shù)組對(duì)象的結(jié)束。正確的方式如下:
NSArray?*items=[NSArray?arrayWithObjects:@"abc",@"cdf",nil];(2)可以使用count方法來(lái)獲取數(shù)組的長(zhǎng)度
NSArray?*items=[NSArray?arrayWithObjects:@"abc",@"cdf",nil]; NSLog(@"%d",[items?count]);以上代碼得到的值是2,還是3呢,一般人都會(huì)認(rèn)為是3,但是這個(gè)數(shù)組的長(zhǎng)度是2,上面已經(jīng)提過(guò)了nil只是作為一個(gè)結(jié)束標(biāo)識(shí)符,并不能代表素組內(nèi)容。現(xiàn)在修改代碼如下:
NSArray?*items=[NSArray?arrayWithObjects:@"abc",@"cdf",nil,nil]; NSLog(@"%d",[items?count]);得到的數(shù)組長(zhǎng)度仍然為2,在第一個(gè)nil的位置就已經(jīng)標(biāo)識(shí)數(shù)組結(jié)束了,所以后面出現(xiàn)再多的數(shù)組元素都沒(méi)有作用。
(3)使用objectAtIndex來(lái)獲取某個(gè)索引位置的數(shù)組元素
NSLog(@"%@",[items?objectAtIndex:0]);以上代碼可以獲得素組對(duì)象items索引位置為0的元素,但是一定要注意數(shù)組的長(zhǎng)度,否則數(shù)組越界異常。
(4)使用for來(lái)遍歷數(shù)組元素
for(int?i=0;i<[items?count];i++){NSLog(@"%@",[items?objectAtIndex:i]); }以上代碼和我們平時(shí)使用遍歷數(shù)組的方式無(wú)異,基本都是這種情況。但是for還有另外一種使用方式,和C#中的foreach使用方式一樣。
for(NSObject?*item?in?items){NSLog(@"%@",item); }
二. 動(dòng)態(tài)數(shù)組
(1)根據(jù)上面所描述的,大致可以猜得出來(lái)動(dòng)態(tài)數(shù)組類,和NSMutableString比較類似。我們使用NSMutableArray來(lái)定義一個(gè)動(dòng)態(tài)數(shù)組。而且NSMutableArray 還提供了一些方法動(dòng)態(tài)像數(shù)組中添加元素,在NSMutableArray不用擔(dān)心在添加元素的時(shí)候發(fā)生數(shù)組越界的問(wèn)題,當(dāng)NSMutableArray長(zhǎng)度被占滿之后會(huì)自動(dòng)擴(kuò)容。
NSMutableArray?*mutItems=[NSMutableArray?arrayWithCapacity:2];我們使用arrayWithCapacity來(lái)定義一個(gè)數(shù)組的容量。
(2)可以使用addObject方法來(lái)向?qū)ο髷?shù)組中添加元素,而且NSMutableArray和NSArray不一樣,不需要使用nil來(lái)介紹標(biāo)識(shí)數(shù)組結(jié)束。NSMutableArray中同樣提供了count 方法來(lái)獲取數(shù)組的長(zhǎng)度,這里需要注意的是count和capacity 是不一樣的,count是獲取的實(shí)際長(zhǎng)度,而capacity是可存放的長(zhǎng)度。
NSMutableArray?*mutItems=[NSMutableArray?arrayWithCapacity:12]; [mutItems?addObject:@"abc"]; [mutItems?addObject:@"def"]; NSLog(@"%d",[mutItems?count]);如果往muItems中繼續(xù)添加元素,直到超過(guò)12個(gè),muItems也不會(huì)報(bào)錯(cuò),而且count也會(huì)大于12,這也是NSMutableArray的優(yōu)勢(shì)所在。
(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)刪除數(shù)組中的元素
- (void)removeObject:(id)anObject inRange:(NSRange)range;設(shè)置在一定范圍內(nèi)刪除,如果在這個(gè)范圍內(nèi)沒(méi)有匹配的元素則什么都不刪除。
- (void)removeObject:(id)anObject;刪除指定元素
- (void)removeObjectsInArray:(NSArray?*)otherArray;刪除數(shù)組中指定的元素
- (void)removeObjectsAtIndexes:(NSIndexSet?*)indexes;刪除指定索引位置的元素
NSRange?range=NSMakeRange(0,?2); [mutItems?removeObject:@"wang"?inRange:range];for?(NSString?*item?in?mutItems)?{NSLog(@"-----?%@",item); }(5)替換數(shù)組元素內(nèi)容
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject; 可以使用這個(gè)方法來(lái)替換某個(gè)索引位置的元素
[mutItems?replaceObjectAtIndex:1?withObject:@"FFFFFFFFFFFFFF"];????????for(NSString?*item?in?mutItems){NSLog(@"************?%@",item);}轉(zhuǎn)載于:https://my.oschina.net/937496430/blog/630575
總結(jié)
- 上一篇: 使用继承思想,去开发一款组件(eleme
- 下一篇: JS检查是否支持Storage