黑馬程式設計師——Foundation框架——NSArray和NSMutableArray
阿新 • • 發佈:2019-01-09
接下來複習的內容是Foundation中使用頻率很高的NSArray和NSMutableArray。
這兩個類和Java中集合的概念相似。
一、NSArray
NSArray是一個數組性質的類。並且同樣與Java類似,只能用來存放物件(且只能是OC物件)。不允許有空值出現。
NSArray是不可更改的,一旦建立完成後,我們無法對其中的項進行新增或刪除的操作。NSArray中存放是有序的。
下面是一些NSArray相關的常用操作和方法,包含了具體的程式碼練習:
pragma mark NSArray void array1(){ //NSArray只允許儲存 OC物件 //建立一個空陣列 NSArray *array = [NSArray array]; //建立有一個元素的陣列 array = [NSArray arrayWithObject:@"Elors"]; //建立有多個元素的陣列 array = [NSArray arrayWithObjects:@"Elors", @"Ashi", @"Archive", nil]; //檢視元素個數 unsigned long count = array.count; //3 //檢測是否包含了這個元素 BOOL flag = [array containsObject:@"Elors"]; //1 //獲取最後一個元素 [array lastObject]; // Archive //獲取指定位置的物件元素 [array objectAtIndex:0]; // Elors //使陣列內所有物件呼叫方法 [array makeObjectsPerformSelector:@selector(description)]; //NSLog(@"%d", flag); //NSLog(@"%ld",count); //NSLog(@"%@",[array description]); };
有了陣列之後,我們需要面對另外一個使用頻率極高的操作了——遍歷陣列。
下面的程式碼練習中。我分別使用了四種方式實現了對陣列的遍歷:
1.普通迴圈
#pragma mark 遍歷陣列 void array2(){ NSArray *array = [NSArray arrayWithObjects: @"Elors", @"Ashi", @"Archive", nil]; for (int i = 0, max = array.count; i < max; i++) { NSObject *obj = [array objectAtIndex:i]; NSLog(@"%@",obj.description); }
2.for in迴圈
NSArray *array = [NSArray arrayWithObjects:
@"Elors", @"Ashi", @"Archive", nil];
for (NSObject *obj in array) {
NSLog(@"%@",obj.description);
}
3.使用Foundation框架提供的方法
NSArray *array = [NSArray arrayWithObjects: @"Elors", @"Ashi", @"Archive", nil]; [array enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%@",[obj description]); //*stop = YES; //終止遍歷 }];
4.使用其迭代器
NSArray *array = [NSArray arrayWithObjects:
@"Elors", @"Ashi", @"Archive", nil];
//獲取陣列迭代器
NSEnumerator *em = [array objectEnumerator];
//反序迭代器
em = [array reverseObjectEnumerator];
id obj = nil;
while (obj = [em nextObject]) {
NSLog(@"%@",[obj description]);
}
以上四中方式中,第三種使用比較方便。
二、NSMutableArray
NSMutableArray同樣是一個數組性質的類,它繼承於NSArray。它是一個可變的陣列。在建立之後可以對陣列項進行操作。
由於NSMutableArray繼承與NSArray,所以大部分東西都是大同小異的,下面我列舉一些基本的操作方法:
void array1(){
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"Elors", nil];
//新增元素
[array addObject:@"Ashi"];
[array addObject:@"AXE"];
//刪除最後一個元素
//[array removeLastObject];
//刪除所有元素
//[array removeAllObjects];
//替換元素
[array replaceObjectAtIndex:1 withObject:@"Archive"];
//排序
[array sortUsingSelector:@selector(compare:)];
NSLog(@"%@",array.description);
};