原文網址:http://www.jianshu.com/p/1ad327f56d1d
不可變數組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);
注: 語法糖是為不可變對象設立的,如果創建可變對象時,使用語法糖,會報黃,創建之后,再為此空間添加對象,程序會拋出異常,因為在運行時,默認是不可變的數組.
文/請叫我大聖(簡書作者)
原文鏈接:http://www.jianshu.com/p/1ad327f56d1d
著作權歸作者所有,轉載請聯系作者獲得授權,並標注“簡書作者”。
原文鏈接:http://www.jianshu.com/p/1ad327f56d1d
著作權歸作者所有,轉載請聯系作者獲得授權,並標注“簡書作者”。