天天看點

NSArray和NSMutableArray的基本用法

一、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];