不可變數組NSArray與可變數組NSMutableArray

不可變數組NSArray

//創建一個空數組
NSArray *array = [NSArray array];
//這樣創建是沒有意義的.

//創建只有一個元素的數組
NSArray *array1 = [NSArray arrayWithArray:@"a"];
NSArray *array2 = [NSArray arrayWithObject:@"b"];

//使用便利構造器創建有多個元素數組
NSArray *array3 = [NSArray arrayWithObjects:@"Hola",@"Bonjour",@"Guten",@"Tag", nil]; //注意最後有nil

//創建數組,有多個元素 使用對象方法
NSArray *array4 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", @"4",nil];
//用一個數組創建另一個數組
NSArray *array5 = [NSArray arrayWithArray:array3];

//在控制檯打印數組中的所有對象 使用數組名
NSLog(@"%@",array5);

//在控制檯打印數組中的某個對象 使用數組名 + 下標法
NSLog(@"%@",array5[0]);

一些常用用法:

NSArray *array = [NSArray arrayWithObjects:@"Hola",@"Guten",@"Tag",@"Bonjour", nil];
//1.獲取數組的元素個數 使用count
NSLog(@"%ld",[array count]);

//2.根據下標獲取下標對應的對象
NSLog(@"%@",[array objectAtIndex:2]);  // 此處[]不能用.代替

//3.通過元素找下標
NSUInteger r = [array indexOfObject:@"three"];
NSLog(@"%ld",r);

//4.判斷數組中是否包含了某個元素
BOOL r1 = [array containsObject:@"one"];
 if (r1) {
     NSLog(@"包含這個元素!");
 }else{
     NSLog(@"沒找着!");
 }

簡化的創建方式 (語法糖):

NSArray *array = @[@"one",@"two",@"three",@"four"];

簡化的訪問方式(通過元素下標來訪問)

NSString *str = array[2];
NSLog(@"%@",str);

數組遍歷:

//第一種方式: 普通遍歷 -- 通過下表訪問
for (int i = 0; i < array.count; i++) {
    NSLog(@"%@",array[i]);
}

//第二種方式: 快速枚舉法--for循環的增強版
for (NSString *obj in array) {
    NSLog(@"%@",obj);
}

//第三種方式: 使用block進行遍歷
[array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    if (idx == 2) {     //idx是下標
        *stop = YES;
    }else{
    NSLog(@"下標爲:%ld 對象爲%@",idx,obj);
    }
}];

可變數組NSMutableArray

可變數組NSMutableArray 繼承於 不可變數組NSArray

//1.創建一個空數組
     NSMutableArray *array =[NSMutableArray array];
//2.維數組追加元素
    [array addObject:@1];
//3.創建數組,添加多個元素
    NSMutableArray *array2 = [NSMutableArray arrayWithCapacity:5];
//添加5個元素
    [array2 addObject:@1];
    array2[1] = @2;
    array2[2] = @3;
    array2[3] = @4;
    array2[4] = @5;
//輸出數組
    NSLog(@"%@",array2);

可變數組有而不可變數組沒有的一些操作:

//插入 insert
    [array2 insertObject:@6 atIndex:0];
    NSLog(@"%@",array2);
//替換  replace
    [array2 replaceObjectAtIndex:0 withObject:@0];
    NSLog(@"%@",array2);
//刪除 remove
    [array2 removeLastObject];
    NSLog(@"%@",array2);
//是否包含 contain
    BOOL r = [array2 containsObject:@2];   //此方法有返回值
    if (r) {
        NSLog(@"包含!");
    } else {
        NSLog(@"不包含!");
    }
//交換元素  exchange
    [array2 exchangeObjectAtIndex:0 withObjectAtIndex:2];
    NSLog(@"%@",array2);

一個典型的錯誤用法:

// NSMutableArray *array =@[@1,@2,@3,@4,@5];
// [array addObject:@”hello”];
// NSLog(@”%@”,array3);
注: 語法糖是爲不可變對象設立的,如果創建可變對象時,使用語法糖,會報黃,創建之後,再爲此空間添加對象,程序會拋出異常,因爲在運行時,默認是不可變的數組.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章