一、OC數組
1.OC中的數組:是一個對象,數組中存放的是對象的位址,可以存放任意OC對象類型的位址,隻能是OC對象.數組是有序的,而且可以存放重複的元素
2.數組分為不可變數組和可變數組.
(1)不可變數組NSArray:初始化之後不能修改數組的内容
(2)可變數組NSMutableArray:可以随時修改數組的内容(增加元素、删除元素、修改元素)
二、NSArray
//常用的建立方式
NSArray *array1 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
NSArray *array2 = @[@"a",@"b",@"c"];
NSArray *array3 = [[NSArray alloc] initWithArray: array1];
NSArray *array4 = [[NSArray alloc] initWithContentsOfFile:@""];
NSArray *array5 = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@""]];
//數組的長度
int count = (int)array1.count;
//判斷數組中是否存在某個對象
BOOL isHave = [array1 containsObject:@"2"];
//取出數組中最後一個元素
NSString *str = [array1 lastObject];
//取出數組中首個元素
str = [array1 firstObject];
//根據下标取出數組中的元素
str = [array1 objectAtIndex:3];
//擷取元素在數組中對應的下标(如果元素不存在,則輸出-1)
int index = (int)[array1 indexOfObject:@"3"];
//數組的周遊
//[1]使用 for 循環周遊
for (int i=0; i<array1.count; i++) {
NSLog(@"%@",[array1 objectAtIndex:i]);
}
//[2]使用 for-in 循環周遊(快速枚舉法) 要求資料類型一緻
for (NSString *str in array1) {
NSLog(@"%@",str);
}
//[3]使用 block 周遊
//idx:循環索引下标(0開始)
//obj:目前對象
[array1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL * stop) {
NSLog(@"%lu----%@",idx,obj);
}];
//将字元串拆成數組
NSArray *arr = [@"1,2,3,4,5" componentsSeparatedByString:@","];
//将數組元素連接配接成字元串
NSArray *arr = @[@"愛國", @"敬業", @"和諧"];
NSString *str = [arr componentsJoinedByString:@"-"];
//檔案的讀寫(plist檔案與xml檔案)
//将數組中的内容寫入檔案
BOOL isOK = [arr writeToFile:@"arr1.xml" atomically:NO];
BOOL isOK = [arr writeToFile:@"arr2.plist" atomically:NO];
//從檔案中讀取資料到數組
NSArray *arr1 = [NSArray arrayWithContentsOfFile:@"arr1.xml"];
NSArray *arr2 = [NSArray arrayWithContentsOfFile:@"arr2.plist"];
三、NSMutableArray
可變數組,繼承自NSArray
//建立并初始化
NSMutableArray *array1 = [[NSMutableArray alloc] init];
//初始化可變數組對象的長度,如果後面代碼繼續添加數組超過長度10以後NSMutableArray的長度會自動擴充
NSMutableArray *array2 = [NSMutableArray arrayWithCapacity:10];
NSMutableArray *array3 = [[NSMutableArray alloc] initWithObjects:@"a",@"b",@"c", nil];
//添加元素
[array1 addObject:@"A"];
NSArray * arr = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil];
[array1 addObjectsFromArray:arr];//把數組元素添加到尾部
//删除數組中所有元素
[array removeAllObjects];
//删除數組中最後一個元素
[array removeLastObject];
//删除指定的元素
[array removeObject:@"A"];
//删除指定下标的元素
[array removeObjectAtIndex:2];
//删除指定下标的元素
[array removeObjectIdenticalTo:NSMA]
//修改資料
[array replaceObjectAtIndex:2 withObject:@"H"];
//交換元素的位置
[array exchangeObjectAtIndex:0 withObjectAtIndex:1];