此文是對數組NSArray與NSMutableArray知識點的總結,主要是一些常見的操作,別外一些操作見其相應的文檔,下面的代碼部分還運用的第三方插件BlocksKit相結合;
1:NSArray一些常見操作
NSArray *array=[NSArray array]; //增加單個 //array=[NSArray arrayWithObject:@"wujy"]; //增加多個 array=[NSArray arrayWithObjects:@"VEVb",@".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:@"VEVb"]; 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); } //合并數組的各項值 //進行數組的合并 中間可以加分格符之類 (這邊是前面加的一個|;合并后的字符串為:|VEVb.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",@"VEVb",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);
新聞熱點
疑難解答