1. 程式人生 > >OC學習----可變陣列與不可變陣列

OC學習----可變陣列與不可變陣列

NSArray / NSMutableArray

在OC中,我們用 NSArray 類和 NSMutableArray 類來表示陣列.其中, NSArray 類是 NSMutableArray 類的父類.在OC中,我們的陣列是有序的 物件 的集合,即我們的陣列只能儲存 物件.在OC中我們的陣列中元素型別不能是 int,float,CGPoint等型別.

NSArray(不可變陣列)

1.初始化方法

    //建立一個空不不可變的陣列
    NSArray *ary1 = [[NSArray alloc] init];
    NSArray *ary2 = [NSArray array];
    //建立一個裡面只有一個元素的不可變陣列
    NSArray *ary3 = [NSArray arrayWithObject:@"abcdefg"];
    //建立一個裡面有多個元素的不可變陣列
    NSArray *ary4 = [NSArray arrayWithObjects:@"aa",@"bb",@"cc",@"dd",nil];
    //新語法
    NSArray *ary5 = @[@"abcdefg"];//與3等價
    NSArray *ary6 = @[@"aa",@"bb",@"cc",@"dd"];//與4等價
    NSArray *ary7 = [NSArray arrayWithArray:ary2];
    //從本地檔案中讀取陣列
    NSArray *ary8 = [NSArray arrayWithContentsOfFile:@""];
    //從網路檔案中讀取陣列
    NSArray *ary9 = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];

2.陣列元素個數

    NSUInteger count = ary6.count;

3.訪問陣列元素

    //訪問ary6中的第一個元素
    NSString *str = [ary6 objectAtIndex:0];
    for (int i = 0; i < ary6.count; i++) {
        NSLog(@"陣列中第%d個元素為:%@",i,[ary6 objectAtIndex:i]);
    }

4.通過陣列中的元素找對應的下標

    NSUInteger index = [ary6 indexOfObject:@"aa"];
    NSLog(@"index = %lu",(unsigned long)index);

5.判斷陣列中是否存在某上元素

    BOOL flag = [ary6 containsObject:@"bb"];

6.向不可變陣列中增加一個元素,生成一個新的陣列

    NSArray *newAry = [ary6 arrayByAddingObject:@"ee"];
    NSArray *newAry1 = [ary6 arrayByAddingObjectsFromArray:ary6];
    NSString *string = [newAry componentsJoinedByString:@","];
    NSArray *array = @[@"123",@"456",@"789",@"000"];
    NSString *string1 = [array componentsJoinedByString:@"-"];
    NSLog(@"%@",string1);

    NSArray *array1 = [string1 componentsSeparatedByString:@"-"];
    NSLog(@"array = %@",array1);

    NSString *string2 = [array1 componentsJoinedByString:@""];
    NSLog(@"%@",string2);
NSMutableArray(可變陣列)
`NSMutableArray` 為 `NSArray` 的子類.

1.初始化方法

    //初始化一個空的可變陣列
    NSMutableArray *mArray1 = [NSMutableArray array];
    NSMutableArray *mArray2 = [NSMutableArray arrayWithObject:@"1"];
    NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];
    NSMutableArray *mArray4 = [NSMutableArray arrayWithArray:mArray2];
    //可變陣列獨有的初始化方法
    NSMutableArray *mArray5 = [NSMutableArray arrayWithCapacity:10];

    NSMutableArray *mArray6 = [NSMutableArray arrayWithContentsOfFile:@""];
    NSMutableArray *mArray7 = [NSMutableArray arrayWithContentsOfURL:@""];

2.增加元素

    //在陣列的末尾增加一個元素
    [mArray3 addObject:@"5"];
    //在陣列的指定位置增加一個元素
    [mArray3 insertObject:@"yanshuxin" atIndex:3];

3.元素替換

    //將陣列指定位置上的元素替換成使用者想要的元素
    [mArray3 replaceObjectAtIndex:2 withObject:@"sb"];

4.元素交換

    [mArray3 exchangeObjectAtIndex:1 withObjectAtIndex:4];

5.刪除元素

    //刪除指定元素
    [mArray3 removeObject:@"1"];
    //刪除指定位置上的元素
    [mArray3 removeObjectAtIndex:2];
    //刪除陣列中最後一個元素
    [mArray3 removeLastObject];
    //刪除所有元素
    [mArray3 removeAllObjects];

6.快速遍歷

    //for(型別 物件 in 集合)
    for (NSString *ele in mArray3) {
        NSLog(@"ele = %@",ele);
    }