ios基礎(chǔ)教程之常見的數(shù)組使用方法
一、數(shù)組的簡單介紹
1.數(shù)組是一個對象,是任意類型對象地址的集合,OC的數(shù)組可以存儲不同類型的對象
2.OC的數(shù)組只能存儲對象,不能存放 簡單的數(shù)據(jù)類型(int, float, NSInteger…)除非通過一些手段把簡單數(shù)據(jù)類型變成對象。在C語言中的數(shù)組可以保存任意類型的數(shù)據(jù)。
3.存儲的內(nèi)存是連續(xù)的
二、不可變數(shù)組
0.定義數(shù)組
//定義一個空數(shù)組 NSArray *array1 = [NSArray array] ; array1 = @[];//空數(shù)組 //通過指定對象創(chuàng)建數(shù)組 array1 = [[NSArray alloc]initWithObjects:@"123",@"hello",@"ya",@"yuan",@"zi", nil] ; //通過簡單的方式創(chuàng)建數(shù)組 array1 = @[@"123",@"hello",@"ya",@"yuan",@"zi"] ;
1.數(shù)組的長度
NSInteger count = array1.count ; NSLog(@"%ld",count) ;
2.判斷當(dāng)前的數(shù)組中是否包含對應(yīng)的對象 containsObject
BOOL isHave = [array1 containsObject:@"123"] ; if (isHave) { NSLog(@"存在") ; }else{ NSLog(@"不存在") ; } /* [A isKindOfClass:B],判斷A類是否是B的子類或者本類。 [A isMemberOfClass:B],判斷A類是否是B類(不包括子類) */
3.得到數(shù)組中最后一個對象
NSString *str = [array1 lastObject]; NSLog(@"str=%@",str) ;
4.得到第一個對象
NSString *str1 = [array1 firstObject]; NSLog(@"str1=%@",str1) ;
5.取出數(shù)組的指定的對象 (下標(biāo)要小于數(shù)組的count)
NSString *str2 = [array1 objectAtIndex:3] ; NSLog(@"str2=%@",str2) ;
6.得到指定元素在數(shù)組中的位置 如果元素不存在則打印-1值
int index = (int)[array1 indexOfObject:@"yayuanzi"] ; int index1 = (int)[array1 indexOfObject:@"ya"] ; NSLog(@"index=%d,index=%d",index,index1) ;
7.數(shù)組的遍歷–> 查找數(shù)組中的每一個元素
7.1 基本的for循環(huán)通過下標(biāo)逐一查找
for (int i = 0; i < array1.count; i++) { NSString *str3 = [array1 objectAtIndex:i] ; NSLog(@"str3 = %@",str3) ; }
7.2 for in 快速遍歷 注意:需要讓數(shù)組中的元素的類型保持一致
for (NSString *str4 in array1) { NSLog(@"str4 = %@",str4) ; }
8.把數(shù)組中所有的元素轉(zhuǎn)化為字符串
[array1 componentsJoinedByString:@“兩個元素之間添加的字符串”];
9.取出數(shù)組中的一部分元素
//只初始化一個索引 NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:2]; //下標(biāo)為1,長度為2 NSRange range = NSMakeRange(0, 3); //構(gòu)造一個范圍的索引 indexSet = [NSIndexSet indexSetWithIndexesInRange:range]; [array objectsAtIndexes:indexSet];
10.把數(shù)組寫入文件
[array1 writeToFile:path atomically:YES];
11.從文件中讀取數(shù)組
[NSArray arrayWithContentsOfFile:path];
三、可變數(shù)組
當(dāng)數(shù)據(jù)不確定數(shù)量或者動態(tài)變化的時候就需要使用到可變數(shù)組
0.創(chuàng)建空的可變數(shù)組
NSMutableArray *mutArray = [[NSMutableArray alloc]init] ; NSMutableArray *mutArray1 = [NSMutableArray array];
1.創(chuàng)建有對象的數(shù)組
1.初始化只能有一個對象
NSMutableArray arrayWithObject:@"111"];
2.初始化只能有多個對象
2.1[NSMutableArray arrayWithObjects:@"1111",@"222",@"333",@"4444", nil];
2.2[[NSMutableArray alloc] initWithObjects:<#(id), ...#>, nil];
2.添加對象 注意下面兩種的區(qū)別
NSMutableArray *mutArray = [[NSMutableArray alloc]init] ; Person *personName1 = [[Person alloc]initWithName:@"wuhu"] ; Person *personName2 = [[Person alloc]initWithName:@"yayuanzi"] ; Person *personName3 = [[Person alloc]initWithName:@"company"] ; NSArray *arr = [NSArray arrayWithObjects:personName2,personName3, nil] ; //1.添加對象 注意下面兩種的區(qū)別 [mutArray addObject:personName1] ; NSLog(@"mutArray = %@",mutArray) ; [mutArray addObject:arr] ; //將arr作為一個對象整體添加到數(shù)組上 NSLog(@"mutArray = %@",mutArray) ; [mutArray addObjectsFromArray:arr] ; //將arr中的對象,一個一個的加到可變數(shù)組中 NSLog(@"mutArray = %@",mutArray) ;
3.交換元素的位置根據(jù)下標(biāo)
[mutArray exchangeObjectAtIndex:1 withObjectAtIndex:2] ;
4.刪除元素
//4.1刪除所有的元素 [mutArray removeAllObjects] ; //4.2刪除最后一個元素 [mutArray removeLastObject] ; //4.3刪除指定的元素 [mutArray removeObject:personName3] ; //4.4根據(jù)下標(biāo)來刪除 :注意元素內(nèi)元素的個數(shù)下標(biāo)問題會導(dǎo)致奔潰 [mutArray removeObjectAtIndex:2] ;
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
IOS UITableViewCell詳解及按鈕點擊事件處理實例
這篇文章主要介紹了IOS UITableViewCell詳解及按鈕點擊事件處理實例的相關(guān)資料,這里附有示例代碼,大家可以看下如何實現(xiàn)按鍵點擊事件,需要的朋友可以參考下2016-12-12iOS開發(fā)中實現(xiàn)hook消息機制的方法探究
這篇文章主要介紹了iOS開發(fā)中實現(xiàn)hook消息機制的方法探究,這里用到了一個Method Swizzling原理,需要的朋友可以參考下2015-10-10詳解iOS AFNetworking取消正在進行的網(wǎng)絡(luò)請求
這篇文章主要介紹了詳解iOS AFNetworking取消正在進行的網(wǎng)絡(luò)請求,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06iOS開發(fā)實現(xiàn)HTTPS之cer文件的使用詳解
下面小編就為大家分享一篇iOS開發(fā)實現(xiàn)HTTPS之cer文件的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01iOS使用Target如何快速科學(xué)的區(qū)分開發(fā)環(huán)境詳解
這篇文章主要給大家介紹了關(guān)于iOS使用Target如何快速科學(xué)的區(qū)分開發(fā)環(huán)境的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12