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