IOS數組NSArray與NSMutableArray知識點,nsarray二維數組

來源:互聯網
上載者:User

IOS數組NSArray與NSMutableArray知識點,nsarray二維數組

此文是對數組NSArray與NSMutableArray知識點的總結,主要是一些常見的操作,別外一些操作見其相應的文檔,下面的代碼部分還運用的第三方外掛程式BlocksKit相結合;

a:Foundation中數組(NSArray)是有序的對象集合b:NSArray只能儲存Objective-C的對象,而不能儲存像int、float這些基礎資料型別 (Elementary Data Type),但是Objective-C對C相容,所以在Objective-C程式中,仍然可以使用C的數組來儲存基礎資料型別 (Elementary Data Type)c:NSArray一旦建立便不可以再對它就變更,如果要進行對數組的增、刪、改等操作的話,需要使用NSArray的子類NSMutableArray來建立對象

1:NSArray一些常見操作

NSArray *array=[NSArray array];    //增加單個    //array=[NSArray arrayWithObject:@"wujy"];    //增加多個    array=[NSArray arrayWithObjects:@"cnblogs",@".com",nil];    NSInteger arrayCount=array.count;    NSLog(@"當前array數組個數為:%ld",arrayCount);        int i=0;    for (id obj in array) {        NSLog(@"當前第%d個為%@",i,obj);        i++;    }        //常用的數組操作    NSString *lastString=[array lastObject];    NSLog(@"最後一個對象的值為:%@",lastString);        NSString *firstString=[array firstObject];    NSLog(@"第一個對象的值為:%@",firstString);        NSString *indexString=[array objectAtIndex:1];    NSLog(@"第二個對象的值為:%@",indexString);        NSInteger indexInt=[array indexOfObject:@"cnblogs"];    NSLog(@"返回索引的位置:%ld",indexInt);        //將字串轉化成數組    NSString *arrayString=@"a,b,c,d";    NSArray *newArray=[arrayString componentsSeparatedByString:@","];    for (id obj in newArray) {        NSLog(@"當前字串轉化為%@",obj);    }        //判斷數組是否存在元素    if ([newArray containsObject:@"c"]) {        NSLog(@"存在字母c的元素");    }    else    {        NSLog(@"不存在字母c的元素");    }        //簡便建立    NSArray *twoArray=[NSArray arrayWithObjects:@1,@2,@3,@4,@5,nil];    //迭代器遍曆  reverseObjectEnumerator數組元素從後向前訪問    NSEnumerator *arrayenumerator=[twoArray reverseObjectEnumerator];    id obj=nil;    while (obj=[arrayenumerator nextObject]) {        NSLog(@"當前值為:%d",[obj intValue]);    }                    //利用BlocksKit外掛程式進行遍曆    NSArray *frArray=[NSArray arrayWithObjects:@(0.2),@(0.5),@(0.9),nil];    [frArray bk_each:^(id obj) {        NSLog(@"%@",obj);    }];        //跟數組項進行對比,若不存在則為空白 存在則為符合的值    id found=[frArray bk_match:^BOOL(id obj) {        BOOL match=([obj floatValue]==0.5)?YES:NO;        return match;    }];    NSLog(@"有符合的值:%@",found);        id notFound=[frArray bk_match:^BOOL(id obj) {        BOOL match=([obj floatValue]==0.7)?YES:NO;        return match;    }];    NSLog(@"沒有符合的值(nil):%@",notFound);    //過濾數組    NSArray *selectFound=[frArray bk_select:^BOOL(id obj) {        BOOL match=([obj floatValue]>0.3)?YES:NO;        return match;    }];    NSLog(@"當前過濾array數組個數為:%ld",selectFound.count);    for (id obj in selectFound) {        NSLog(@"當前符合為%@",obj);    }        //過濾數組 取相反    NSArray *rejectFound=[frArray bk_reject:^BOOL(id obj) {        BOOL match=([obj floatValue]>0.3)?YES:NO;        return match;    }];    NSLog(@"當前取反array數組個數為:%ld",rejectFound.count);    for (id obj in rejectFound) {        NSLog(@"當前符合為(0.2符合)%@",obj);    }        //遍曆數組 對每個值都進行修改 組成新的數組    NSArray *mapFound = [array bk_map:^id(id obj) {        return [obj stringByAppendingString:@".png"];    }];    for (id obj in mapFound) {        NSLog(@"當前map %@",obj);    }        //合并數組的各項值    //進行數組的合并 中間可以加分格符之類 (這邊是前面加的一個|;合并後的字串為:|cnblogs.com)    NSString *concentrated = [array bk_reduce:@"|" withBlock:^id(id sum, id obj) {        return [sum stringByAppendingString:obj];    }];    NSLog(@"合并後的字串為:%@",concentrated);        //相加  還有一個為整數型 bk_reduceInteger    float value = [frArray bk_reduceFloat:0 withBlock:^CGFloat(CGFloat result, id obj) {        return result + [obj floatValue];    }];    NSLog(@“合并後的frArray值為:%f",value);

 

2:NSMutableArray一些常見的操作

//從array轉nsmutablearray    NSArray *array=[[NSArray alloc] initWithObjects:@"wujy",@"cnblogs",nil];    NSMutableArray *mutableArray=[NSMutableArray arrayWithArray:array];        //建立NSMutableArray    NSMutableArray *newMutableArray=[NSMutableArray array];    [newMutableArray addObject:@"a"];    [newMutableArray addObjectsFromArray:[[NSArray alloc] initWithObjects:@"b",@"c",@"d",@"e",nil]];    //迭代器遍曆  reverseObjectEnumerator數組元素從後向前訪問    NSEnumerator *arrayenumerator=[newMutableArray reverseObjectEnumerator];    id obj=nil;    while (obj=[arrayenumerator nextObject]) {        NSLog(@"當前值為:%@",obj);    }        //建立NSMutableArray    NSMutableArray *capacityArray=[[NSMutableArray alloc] initWithCapacity:5];    [capacityArray addObjectsFromArray:[[NSArray alloc] initWithObjects:@1,@2,@3,nil]];    NSLog(@"刪除前(1,2,3):%@",capacityArray);    //刪除指定的元素    [capacityArray removeObject:@3];    NSLog(@"刪除後(1,2):%@",capacityArray);    //插入    [capacityArray insertObject:@4 atIndex:2];    NSLog(@"插入後的(1,2,4)%@",capacityArray);    //插入多個    NSIndexSet *set=[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 2)];    [capacityArray insertObjects:[[NSArray alloc] initWithObjects:@5,@6,nil] atIndexes:set];    NSLog(@"插入多個以後的(5,6,1,2,4):%@",capacityArray);        //Blocks操作    //過濾    [capacityArray bk_performSelect:^BOOL(id obj) {        BOOL match=([obj intValue]>2)?YES:NO;        return match;    }];    NSLog(@"過濾後的數組值為(5,6,4):%@",capacityArray);        //取反過濾    [capacityArray bk_performReject:^BOOL(id obj) {        BOOL match=([obj intValue]>5)?YES:NO;        return match;    }];    NSLog(@"過濾取反後的數組值為(5,4):%@",capacityArray);        //對數組的值進行操作    [capacityArray bk_performMap:^id(id obj) {        return [NSNumber numberWithInt:[obj intValue]+1];    }];    NSLog(@"map後的數組值為(6,5):%@",capacityArray);

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.