iOS學(xué)習(xí)(OC語(yǔ)言)知識(shí)點(diǎn)整理
一、OC中的數(shù)組
1)數(shù)組:也是一個(gè)對(duì)象,數(shù)組中存放的是對(duì)象的地址,可以存放任意類型對(duì)象的地址,只能是對(duì)象不能是具體的數(shù)值,數(shù)組是有序的,
可以存放重復(fù)的元素,數(shù)組也分為不可變數(shù)組和可變數(shù)組.
1、不可變數(shù)組NSArray:初始化之后不能修改數(shù)組的內(nèi)容
2、可變數(shù)組NSMutableArray:可以隨時(shí)修改數(shù)組的內(nèi)容(增加元素、刪除元素、修改元素)
二、NSArray數(shù)組的操作
1)NSArray數(shù)組的創(chuàng)建
1、創(chuàng)建方法一:使用實(shí)例方法創(chuàng)建數(shù)組對(duì)象 例如:
1 NSArray *array1=[[NSArray alloc]initWithObjects:@"one",2 [NSNumber numberWithInt:20],@"three",@"one",@"four", nil];3 //用一個(gè)數(shù)組對(duì)象創(chuàng)建另一個(gè)數(shù)組對(duì)象4 NSArray *array2=[[NSArray alloc]initWithArray:array1];
2、創(chuàng)建方法二:用類方法創(chuàng)建數(shù)組對(duì)象 例如:
1 NSArray *array3=[NSArray arrayWithObjects:@"one",@"two",@"three",@"four", nil];
3、創(chuàng)建方法三:直接快速創(chuàng)建數(shù)組 例如:
1 NSArray *array4=@[@"one",@"two",@"three",@"four"];
2)數(shù)組中可使用.count 獲取數(shù)組中元素的個(gè)數(shù), 例如: 1 NSUInteger number= array1.count;
3)objectAtIndex 用于根據(jù)數(shù)組下標(biāo)獲取數(shù)組中的元素 例如:
1 NSString *str1=[array1 objectAtIndex:0]; //獲取數(shù)組中的第一個(gè)元素
2 NSString *str2=array1[0];//使用類似C語(yǔ)言的方式取出下標(biāo)對(duì)應(yīng)的元素
4)firstObject 用于獲取數(shù)組中的第一個(gè)元素 例如:
1 NSString *first=[array1 firstObject];
5)lastObject 用于獲取數(shù)組中最后一個(gè)元素 例如:
1 NSString *last=[array1 lastObject];
6)indexOfObject 用于根據(jù)元素獲取該元素在數(shù)組中的下標(biāo) 例如:
1 NSUInteger index=[array1 indexOfObject:@"three"];// 結(jié)果為:2
7)containsObject 用于判斷數(shù)組中是否存在某個(gè)元素 例如:
1 if([array1 containsObject:@"four"]){2 NSLog(@"contains");3 }
8)subarrayWithRange 獲取數(shù)組某個(gè)范圍的數(shù)據(jù),可用于對(duì)數(shù)組數(shù)據(jù)分頁(yè)操作
1 NSArray *numArray=@[@1,@2,@3,@5,@6];2 NSRange range=NSMakeRange(1, 2);//第一個(gè)參數(shù)為取值起始位置;第二個(gè)參數(shù)為取值個(gè)數(shù)3 NSArray *array=[numArray subarrayWithRange:range];4 NSLog(@"%@",array);//結(jié)果:(2,3)
9)NSArray 數(shù)組遍歷方法
1、循環(huán)遍歷法:通過(guò)下標(biāo)取每個(gè)元素 例如:
1 for(int i=0;i<array1.count;i++){2 NSString *s=[array1 objectAtIndex:i];3 NSLog(@"%@",s);4 }
2、迭代器法:創(chuàng)建一個(gè)迭代器對(duì)象,遍歷array1的元素 例如:
1 NSEnumerator *enumerator=[array1 objectEnumerator];2 id obj;3 //[enumerator nextObject]:迭代器自動(dòng)指向下一個(gè)元素,如果沒(méi)有元素,為nil4 while (obj=[enumerator nextObject]) {5 NSLog(@"%@",obj);6 }
3、快速遍歷法: 遍歷時(shí)不能修改元素的內(nèi)容 例如:
1 //循環(huán)中會(huì)自動(dòng)將數(shù)組中的每個(gè)元素賦給s2 for(id s in array1){3 if([s isKindOfClass:[NSNumber class]])//取出數(shù)組中的數(shù)值類型的數(shù)據(jù)4 NSLog(@"number ******%@",s);5 else if ([s isKindOfClass:[NSString class]]) //取出數(shù)組中字符串類型的數(shù)據(jù)6 NSLog(@"nsstring******%@",s);7 8 }
10) 直接輸出打印一個(gè)數(shù)組是會(huì)自動(dòng)調(diào)用數(shù)組中的元素的description方法,把所有的元素都顯示出來(lái) 例如:
1 NSLog(@"%@",array1);//注:中文內(nèi)容會(huì)變亂碼,需要循環(huán)遍歷輸出才行。
11)componentsJoinedByString 用于將數(shù)組中的各個(gè)元素用指定字符拼接成一個(gè)字符串 例如:
NSString *s=[array1 componentsJoinedByString:@","];//以逗號(hào)拼接各個(gè)元素
12)componentsSeparatedByString 用于將一個(gè)字符串以指定字符分割成一個(gè)數(shù)組 例如:
1 NSString *str=@"hello,nihao,shang,hai"; 2 NSArray *array6=[str componentsSeparatedByString:@","];//以符號(hào)分割字符串
13)componentsSeparatedByCharactersInSet 用字符串中所有的字符創(chuàng)建一個(gè)字符集對(duì)象,根據(jù)字符集對(duì)象截取字符串 例如:
1 NSString *str7=@"hello,@nihao!shang,hai";2 NSArray *array7=[str7 componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@",@!"]];3 NSLog(@"array7:%@",array7);4 5 // 注:根據(jù)字符集對(duì)象中的任意一個(gè)字符,將字符串拆分成各個(gè)子字符串,會(huì)出現(xiàn)@""的情況,需要自己手動(dòng)處理, 例如:6 if (![str isEqualToString:@""]) {7 //執(zhí)行代碼8 }
三、NSMutableArray 數(shù)組的操作
1)可變數(shù)組:父類是NSArray,NSMutableArray可以操作數(shù)組中的元素(增加、刪除、修改)
2)initWithObjects 用于創(chuàng)建可變數(shù)組對(duì)象 例如:
1 NSMutableArray *array1=[[NSMutableArray alloc]initWithObjects:@"one",@"two", nil];
3)addObject 在數(shù)組最后添加一個(gè)對(duì)象 例如:
1 [array1 addObject:[NSNumber numberWithInt:100]];
4)insertObject … atIndex… 在數(shù)組的指定索引位置插入一個(gè)對(duì)象 例如:
1 [array1 insertObject:@"shanghai" atIndex:0];
5)removeObject 刪除指定元素,如果有多個(gè),全都被刪除 ,例如:
1 [array1 removeObject:@"one"];
6)removeLastObject 用于刪除最后一個(gè)元素 例如:
1 [array1 removeLastObject];
7)removeObjectAtIndex 用于刪除數(shù)組中指定位置的元素 例如:
1 [array1 removeObjectAtIndex:2];
8)removeObject… inRange… 將指定范圍內(nèi)的元素刪除(如果不指定,會(huì)將所有相同的都刪除) 例如:
1 [array1 removeObject:@"two" inRange:NSMakeRange(0, 3)];
9)removeAllObjects 刪除數(shù)組中所有的元素 例如:
1 [array1 removeAllObjects];
10)replaceObjectAtIndex… withObject… 將指定位置的元素用新的元素替換 例如:
1 [array1 replaceObjectAtIndex:0 withObject:@"hello"];
11)exchangeObjectAtIndex… withObjectAtIndex… 用于交換指定下標(biāo)處的元素 例如:
1 [array1 exchangeObjectAtIndex:0 withObjectAtIndex:2];
12)setArray 重置數(shù)組中的內(nèi)容 例如:
1 NSArray *subArray=@[@"ios",@"two",@"oc"];2 [array1 setArray:subArray];
13)NSMutableArray 對(duì)類對(duì)象的排序操作。
實(shí)例代碼:
//數(shù)組根據(jù)指定元素排序的操作NSMutableArray *array=[[NSMutableArray alloc]init];Student *stu=[[Student alloc]init];stu.name=@"KingKong";stu.age=24;stu.no=@"A1088";stu.score=99;[array addObject:stu];//根據(jù)成績(jī)正序排(ascending:NO 倒序排)NSSortDescriptor *sortDes = [NSSortDescriptor sortDescriptorWithKey:@"score" ascending:YES]; [array sortUsingDescriptors:[NSMutableArray arrayWithObject:sortDes]];
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注