Object C學習筆記11-數組

 

  在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 還提供了大量的其餘方法,仍有待繼續努力學習和使用!        

相關文章
相關標籤/搜索