Objective-C的數(shù)組和許多其他的編程語(yǔ)言都不太一樣锨络,Objective-C的數(shù)組比C++,Java的數(shù)組強(qiáng)大在于狼牺,NSArray保存的對(duì)象可以是不同類型的對(duì)象羡儿。但是缺點(diǎn)是只能保存對(duì)象,int ,char,double等基本數(shù)據(jù)類型不能直接保存是钥,需要通過(guò)轉(zhuǎn)換成OC對(duì)象才能加入數(shù)組掠归。
1.NSArray
NSArray是不可變的數(shù)組,一旦初始化完成就不能對(duì)這個(gè)數(shù)組進(jìn)行插入刪除等操作悄泥,只能對(duì)其重新賦值虏冻。NSArray只能儲(chǔ)存Objective-C對(duì)象,另外弹囚,數(shù)組的最后一個(gè)元素一定是nil厨相,表示結(jié)束。
數(shù)組的創(chuàng)建
// 創(chuàng)建一個(gè)空數(shù)組
NSArray*arr=[NSArrayarray];
// 創(chuàng)建裝進(jìn)一個(gè)元素的數(shù)組
NSArray*array1=[NSArrayarrayWithObject:@"obj"];
// 創(chuàng)建裝進(jìn)多個(gè)元素的數(shù)組
// nil 是用來(lái)作為數(shù)組元素結(jié)束的標(biāo)記鸥鹉,不是數(shù)組元素
NSArray*array2=[NSArrayarrayWithObjects:@"obj1",@"obj2",@"obj3",nil];
// 通過(guò)已有數(shù)組來(lái)創(chuàng)建一個(gè)新數(shù)組
NSArray*array3=[NSArrayarrayWithArray:array2];
// 快速創(chuàng)建OC數(shù)組
NSArray*array4=@[@"111",@"222",@"333"];// 編譯器特性蛮穿,實(shí)質(zhì)就是arrayWithObjects:方法
NSLog(@"array1 :%@",array1);
NSLog(@"array2 :%@",array2);
NSLog(@"array3 :%@",array3);
NSLog(@"array4 :%@",array4);
//實(shí)例方法創(chuàng)建數(shù)組
NSArray*array5=[[NSArrayalloc]initWithObjects:@"aaa",@"bbb",nil];
NSLog(@"array5 :%@",array5);
數(shù)組常用方法
// 快速創(chuàng)建一個(gè)數(shù)組
NSArray*arr=@[@"123",@"234",@"456"];
// 獲取數(shù)組中元素個(gè)數(shù)(也可使用點(diǎn)語(yǔ)法)
NSLog(@"arr count :%lu",[arr count]);
// 查找某個(gè)對(duì)象所在索引
NSUIntegerindex=[arr indexOfObject:@"456"];
NSLog(@"index = %lu",index);
// 訪問(wèn)索引對(duì)應(yīng)的元素
id obj=[arr objectAtIndex:0];
NSLog(@"obj = %@",obj);
// 快速訪問(wèn)下標(biāo)對(duì)應(yīng)元素
obj=arr[0];// 編譯器特性,實(shí)質(zhì)就是objectAtIndex:方法
NSLog(@"obj = %@",obj);
// 追加一個(gè)對(duì)象到數(shù)組(返回新的array對(duì)象)
NSArray*arr2=[arr arrayByAddingObject:@"888"];
NSLog(@"arr2 = %@",arr2);
// 判斷數(shù)組是否包含指定對(duì)象
BOOL b=[arr2 containsObject:@"xyz"];
NSLog(@"b = %d",b);
b=[arr isEqualToArray:arr2];
NSLog(@"b = %d",b);
// 獲得第一個(gè)元素
NSLog(@"first = %@",arr2.firstObject);
// 獲得最后一個(gè)元素
NSLog(@"last = %@",arr2.lastObject);
// 根據(jù)指定的字符串連接數(shù)組元素
NSString*linkedString=[arr2 componentsJoinedByString:@"|"];
NSLog(@"linkedString :%@",linkedString);