iOS官方文檔 Foundation篇---NSArray(NSMutableArray)

人生在世 總是要不斷 創(chuàng)新 挑戰(zhàn) 突破 被淘汰算其次 活得刺激 有價(jià)值更加重要。

————嘆希奇

NSArray

靜態(tài)有序集合(不可變數(shù)組)

#數(shù)組創(chuàng)建
NSArray *array = @[@"1",@"2",@"3",@"4",@"5"];
NSArray *array1 = [NSArray array];
NSArray *array2 = [[NSArray alloc]init];
NSArray *array3 = [[NSArray
alloc]initWithObjects:@"b",@"a",@"e",@"c",@"d",@"1",@"2",@"3",@"4",@"5", nil];
NSArray *array4 = [[NSArray alloc]initWithArray:array];
#數(shù)組取值
//根據(jù)索引取值
NSString *objest = [array objectAtIndex:0];
NSString *objest1 = array[0];//1
//取數(shù)組中的第一個(gè)對(duì)象
NSString *string3 = array.firstObject;//1
//取數(shù)組中的最后一個(gè)對(duì)象    
NSString *string4 = array.lastObject;//5
#數(shù)組屬性
//長(zhǎng)度
NSInteger length = array.count;
    
//添加對(duì)象到數(shù)組尾部,返回一個(gè)新數(shù)組
NSArray *array5 = [array arrayByAddingObject:@"6"];//1,2,3,4,5,6

//添加一個(gè)數(shù)組到數(shù)組尾部,返回一個(gè)新數(shù)組
NSArray *array6 = [array arrayByAddingObjectsFromArray:array1];//1,2,3,4,5

//數(shù)組元素之間插入分隔符,返回一個(gè)字符串
NSString *string = [array componentsJoinedByString:@"-"];//1-2-3-4-5

//對(duì)象是否存在在數(shù)組中,返回一個(gè)BOOl值
BOOL isConain = [array containsObject:@"1"];//YES

//返回?cái)?shù)組內(nèi)容的字符串
NSString *string1 = array.description;//1,2,3,4,5
NSString *string1 = [array descriptionWithLocale:nil];//1,2,3,4,5

//返回接收數(shù)組中包含的第一個(gè)對(duì)象,該對(duì)象等于另一個(gè)給定數(shù)組中的對(duì)象。
NSString *string2 = [array firstObjectCommonWithArray:array3];//1

//返回其對(duì)應(yīng)的數(shù)組值等于給定對(duì)象的最低索引。
NSUInteger index = [array indexOfObject:@"1"];//0
    
//返回指定范圍內(nèi)的最低索引,其對(duì)應(yīng)的數(shù)組值等于給定對(duì)象
NSUInteger index1 = [array indexOfObject:@"1" inRange:NSMakeRange(0, array.count)];//0

//返回最低索引,其對(duì)應(yīng)的數(shù)組值與給定對(duì)象相同。
NSInteger index2 = [array indexOfObjectIdenticalTo:@"1"];//0
    
//返回指定范圍內(nèi)的最低索引,其對(duì)應(yīng)的數(shù)組值等于給定對(duì)象
NSInteger index3 = [array indexOfObjectIdenticalTo:@"1" inRange:NSMakeRange(0, array.count)];//0
    
//判斷兩數(shù)組是否相同,返回一個(gè)BOOL值
BOOL isEqual = [array isEqualToArray:array1];//NO
#數(shù)組遍歷
//正向遍歷數(shù)組
NSEnumerator *enumerator = [array objectEnumerator];
NSString *objs;
while (objs = [enumerator nextObject]) {
  NSLog(@"數(shù)組正序值開始打?。?@\n",objs);
}
//反向遍歷數(shù)組
NSEnumerator *reverseEnumerator = [array reverseObjectEnumerator];
NSString *reobjs;
while (reobjs = [reverseEnumerator nextObject]) {
  NSLog(@"數(shù)組倒序值開始打?。?@\n", reobjs);
}
#數(shù)組排序
//排序方法
NSInteger alphabeticSort(id string1, id string2, void *reverse)
{
    if (*(BOOL *)reverse == YES) {
        return [string2 localizedCaseInsensitiveCompare:string1];
    }
    return [string1 localizedCaseInsensitiveCompare:string2];
}

NSData *data = [array3 sortedArrayHint];
BOOL reverseSort = NO;
NSArray *sortArr = [array3 sortedArrayUsingFunction:alphabeticSort context:&reverseSort];//12345abcde
NSArray *sortArr = [array3 sortedArrayUsingFunction:alphabeticSort context:&reverseSort hint:data];//12345abcde
    
//自定義排序方法
NSArray *sortAr1 = [array3 sortedArrayUsingSelector:@selector(compare:)];//12345abcde

//排序
NSArray *sortArr1 = [array3 sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
  return [obj1 compare:obj2];
}];//12345abcde
    
//排序
/*
SSortOptions:
     NSSortConcurrent    高效的但不穩(wěn)定的排序算法
     NSSortStable        穩(wěn)定的排序算法
*/
NSArray *sortArr2 = [array3 sortedArrayWithOptions:NSSortConcurrent usingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
  return [obj1 compare:obj2];
}];//12345abcde
#數(shù)組遍歷
//普通遍歷
for (NSInteger i = 0; i < array.count; i++) {
  NSString *str = array[i];
}

//快速遍歷
for (NSString *str in array) {
  NSLog(@"%@", str);
}

//枚舉遍歷
[array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
  NSLog(@"%@",obj);        
}];

/*
NSEnumerationOptions
    NSEnumerationConcurrent   //無(wú)序遍歷
    NSEnumerationReverse      //倒序遍歷
 */
//根據(jù)遍歷選項(xiàng)遍歷
[array enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
  NSLog(@"%@",obj);
}];

//根據(jù)索引和遍歷選項(xiàng)遍歷數(shù)組
NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0,2)];
[array enumerateObjectsAtIndexes:set options:NSEnumerationConcurrent usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
  NSLog(@"%@",obj);
}];

NSMutableArray

可變數(shù)組,繼承自NSArray

#可變數(shù)組創(chuàng)建
NSArray *array = @[@"1",@"2",@"3",@"4",@"5"];//1,2,3,4,5
NSMutableArray *mulArr = [[NSMutableArray alloc]initWithObjects:@"1",@"2", nil];////1,2
NSMutableArray *mulArray = [[NSMutableArray alloc]initWithArray:array];//1,2,3,4,5
#插入元素
//在數(shù)組末尾插入給定對(duì)象
[mulArr addObject:@"q"];//1,2,q
//在數(shù)組末尾插入給定數(shù)組的元素
[mulArr addObjectsFromArray:array];//1,2,q,1,2,3,4,5

//在數(shù)組中插入元素到指定索引位置
[mulArr insertObject:@"Q" atIndex:0];//Q,1,2,q,1,2,3,4,5
//在數(shù)組中插入數(shù)組元素到指定索引位置
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, array.count)];
[mulArr insertObjects:array atIndexes: indexSet];//1,2,3,4,5,Q,1,2,q,1,2,3,4,5
#刪除元素
//刪除數(shù)組中具有最高值索引的元素(最后一個(gè)元素)
[mulArr removeLastObject];//1,2,3,4,5,Q,1,2,q,1,2,3,4

//刪除指定下標(biāo)的元素
[mulArr removeObjectAtIndex:0];//2,3,4,5,Q,1,2,q,1,2,3,4

//刪除給定數(shù)組中的元素
[mulArr removeObjectsInArray:array];//Q,q

//刪除指定范圍內(nèi)的所有匹配的元素
[mulArray removeObject:@"1" inRange:NSMakeRange(0, 3)];//,2,3,4,5

//刪除數(shù)組中所有匹配的元素
[mulArray removeObject:@"2"];//3,4,5

//刪除數(shù)組中所有出現(xiàn)的給定對(duì)象。
[mulArray removeObjectIdenticalTo:@"q"];//3,4,5

//刪除數(shù)組中指定范圍內(nèi)的所有匹配元素
[mulArray removeObjectIdenticalTo:@"5" inRange:NSMakeRange(0, mulArray.count)];//3,4

////刪除數(shù)組中指定范圍內(nèi)的元素
[mulArray removeObjectsInRange:NSMakeRange(0, 1)];//4

NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 1)];//nil
//從數(shù)組中刪除指定索引處的對(duì)象
[mulArray removeObjectsAtIndexes:set];//nil

//刪除數(shù)組中所有的元素
[mulArray removeAllObjects];
#replace
//替換元素
[mulArray setArray:array];//1,2,3,4,5
//替換數(shù)組中指定索引處的元素
[mulArray replaceObjectAtIndex:0 withObject:@"Q"];//Q,2,3,4,5

//將給定范圍指定的接收數(shù)組中的對(duì)象替換為給定數(shù)組中的所有對(duì)象
[mulArray replaceObjectsInRange:NSMakeRange(0, mulArray.count-1) withObjectsFromArray:array];//1,2,3,4,5,5

//將由一個(gè)給定范圍指定的接收數(shù)組中的對(duì)象替換為另一個(gè)范圍指定的另一個(gè)數(shù)組中的對(duì)象。
[mulArray replaceObjectsInRange:NSMakeRange(0, mulArray.count-1) withObjectsFromArray:array range:NSMakeRange(0, array.count-1)];//1,2,3,4,5

//將接收數(shù)組中的對(duì)象替換為使用給定數(shù)組中的對(duì)象指定的位置。
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, array.count)];
[mulArray replaceObjectsAtIndexes: indexSet withObjects:array];//1,2,3,4,5

//將接收數(shù)組的元素設(shè)置為另一個(gè)給定數(shù)組中的元素
[mulArray setArray:array];//1,2,3,4,5

//用新對(duì)象替換索引處的對(duì)象,可能添加對(duì)象
[mulArray setObject:@"1" atIndexedSubscript:0];//1,2,3,4,5
#exchange index
//交換數(shù)組中指定索引位置的元素
[mulArray setArray:array];//1,2,3,4,5
[mulArray exchangeObjectAtIndex:0 withObjectAtIndex:mulArray.count];//5,2,3,4,1
#排序
[mulArr sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
  return [obj1 compare:obj2];
}];
/*
SSortOptions:
    NSSortConcurrent    高效的但不穩(wěn)定的排序算法
    NSSortStable        穩(wěn)定的排序算法
*/
[mulArr sortWithOptions:NSSortConcurrent usingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
  return [obj1 compare:obj2];
}];

歡迎留言指正,會(huì)持續(xù)更新!??!

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,652評(píng)論 1 32
  • 站在前輩的肩膀上前行 UIKit框架和Foundation框架 所有的Mac OS X和IOS程序都是由大量的對(duì)象...
    zysmoon閱讀 8,946評(píng)論 0 16
  • 關(guān)于鍵值編碼 鍵值編碼(KVC)是一種由NSKeyValueCoding非正式協(xié)議提供的機(jī)制,對(duì)象采用該機(jī)制來(lái)提供...
    漸z閱讀 1,180評(píng)論 0 0
  • 從2月份起,我們約定每月給孩子固定的零花錢,約定好錢的用途,平時(shí)由孩子自己支配,每筆登賬。月末多扣少獎(jiǎng)。由...
    雪兒_7d5f閱讀 272評(píng)論 2 1
  • 今天早上我早早起來(lái)了,因?yàn)橛谐孔x。奶奶六點(diǎn)半就過(guò)來(lái)了,吃完早飯我和奶奶趕緊去學(xué)校。結(jié)果,今天下雨了,老師說(shuō)...
    郝麗君_67b1閱讀 176評(píng)論 0 0

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