NSArray / NSMutableArray 簡(jiǎn)介和轉(zhuǎn)換

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ù)組)
NSMutableArrayNSArray 的子類.
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é)同大家分享!!!??????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容