NSArray(不可變數(shù)組) / NSMutableArray (可變數(shù)組)
在OC中,我們用 NSArray 類和 NSMutableArray 類來(lái)表示數(shù)組.其中, NSArray 類是 NSMutableArray 類的父類.在OC中,我們的數(shù)組是有序的 對(duì)象 的集合,即我們的數(shù)組只能存儲(chǔ) 對(duì)象.在OC中我們的數(shù)組中元素類型不能是 int,float,CGPoint等類型.
先講 NSArray / NSMutableArray 之間互相轉(zhuǎn)換
//不可變數(shù)組轉(zhuǎn)可變數(shù)組
NSArry *array = [NSArray array];
NSMutableArray *mArray = [NSMutableArray arrayWithArray:array];
// 可變字典轉(zhuǎn)不可變字典
NSMutableArray *mArray = [NSMutableArray array];
NSArray *a = [NSArray arrayWithArray: mArray];
這個(gè)地方需要注意的是在傳遞數(shù)據(jù)的時(shí)候,如果出現(xiàn)不可變數(shù)組傳遞可變數(shù)組, 數(shù)據(jù)將會(huì)丟失
@property (nonatomic,strong) NSMutableArray *mArr;
[self.myArray addObject:[ResMyConsult icon:icon timeStr:nowtimeStr
contentText:_textView.text photosArr: mArr]];
// 這里 self.myArray 中 photosArr參數(shù)數(shù)據(jù)就會(huì)丟失
+ (ResMyConsult *)icon:(NSString *)icon timeStr:(NSString*)qtime
contentText:(NSString *)contentText photosArr:(NSArray<UIImage *>*)photosArr;
下面開(kāi)始講NSArray(不可變數(shù)組)
1.初始化方法
//創(chuàng)建一個(gè)空不不可變的數(shù)組
NSArray *ary1 = [[NSArray alloc] init];
NSArray *ary2 = [NSArray array];
//創(chuàng)建一個(gè)里面只有一個(gè)元素的不可變數(shù)組
NSArray *ary3 = [NSArray arrayWithObject:@"abcdefg"];
//創(chuàng)建一個(gè)里面有多個(gè)元素的不可變數(shù)組
NSArray *ary4 = [NSArray arrayWithObjects:@"aa",@"bb",@"cc",@"dd",nil];
//新語(yǔ)法
NSArray *ary5 = @[@"abcdefg"];//與3等價(jià)
NSArray *ary6 = @[@"aa",@"bb",@"cc",@"dd"];//與4等價(jià)
NSArray *ary7 = [NSArray arrayWithArray:ary2];
//從本地文件中讀取數(shù)組
NSArray *ary8 = [NSArray arrayWithContentsOfFile:@""];
//從網(wǎng)絡(luò)文件中讀取數(shù)組
NSArray *ary9 = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@""]];
2.數(shù)組元素個(gè)數(shù)
NSUInteger count = ary6.count;
3.訪問(wèn)數(shù)組元素
//訪問(wèn)ary6中的第一個(gè)元素
NSString *str = [ary6 objectAtIndex:0];
for (int i = 0; i < ary6.count; i++) {
NSLog(@"數(shù)組中第%d個(gè)元素為:%@",i,[ary6 objectAtIndex:i]);
}
4.通過(guò)數(shù)組中的元素找對(duì)應(yīng)的下標(biāo)
NSUInteger index = [ary6 indexOfObject:@"aa"];
NSLog(@"index = %lu",(unsigned long)index);
5.判斷數(shù)組中是否存在某上元素
BOOL flag = [ary6 containsObject:@"bb"];
6.向不可變數(shù)組中增加一個(gè)元素,生成一個(gè)新的數(shù)組
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(可變數(shù)組)
NSMutableArray 為 NSArray 的子類.
1.初始化方法
//初始化一個(gè)空的可變數(shù)組
NSMutableArray *mArray1 = [NSMutableArray array];
NSMutableArray *mArray2 = [NSMutableArray arrayWithObject:@"1"];
NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];
NSMutableArray *mArray4 = [NSMutableArray arrayWithArray:mArray2];
//可變數(shù)組獨(dú)有的初始化方法
NSMutableArray *mArray5 = [NSMutableArray arrayWithCapacity:10];
NSMutableArray *mArray6 = [NSMutableArray arrayWithContentsOfFile:@""];
NSMutableArray *mArray7 = [NSMutableArray arrayWithContentsOfURL:@""];
2.增加元素
//在數(shù)組的末尾增加一個(gè)元素
[mArray3 addObject:@"5"];
//在數(shù)組的指定位置增加一個(gè)元素
[mArray3 insertObject:@"yanshuxin" atIndex:3];
3.元素替換
//將數(shù)組指定位置上的元素替換成用戶想要的元素
[mArray3 replaceObjectAtIndex:2 withObject:@"sb"];
4.元素交換
[mArray3 exchangeObjectAtIndex:1 withObjectAtIndex:4];
5.刪除元素
//刪除指定元素
[mArray3 removeObject:@"1"];
//刪除指定位置上的元素
[mArray3 removeObjectAtIndex:2];
//刪除數(shù)組中最后一個(gè)元素
[mArray3 removeLastObject];
//刪除所有元素
[mArray3 removeAllObjects];
6.快速遍歷
//for(類型 對(duì)象 in 集合)
for (NSString *ele in mArray3) {
NSLog(@"ele = %@",ele);
}
我是楚簡(jiǎn)約,感謝您的閱讀,
喜歡就點(diǎn)個(gè)贊唄,“?喜歡”,
鼓勵(lì)又不花錢,你在看,我就繼續(xù)寫(xiě)~
非簡(jiǎn)書(shū)用戶,可以點(diǎn)右上角的三個(gè)“...”,然后"在Safari中打開(kāi)”,就可以點(diǎn)贊咯~
到此為止.記錄下容易忘的細(xì)節(jié)同大家分享!!!??????