1. 程式人生 > >ObjectiveC(3)_NSArray和NSMutableArray

ObjectiveC(3)_NSArray和NSMutableArray

OC中陣列定義

Foundation中的陣列是一組有序的物件集合,通過索引下標獲取到陣列中的元素。特性:

  • 陣列分可變(NSMutableArray)和不可變陣列(NSArray)
  • 不能存放基本資料型別,只能存放類的例項(物件)
  • 如需要將基本資料型別或結構體放入陣列中,需要通過NSNumber和NSValue進行包裝。

陣列的建立

// 1.初始化一個元素
NSArray *arr1 = [NSArray arrayWithObject:@"one"];
NSLog(@"初始化一個元素:%@",arr1);
// 2.初始化多個元素
NSArray *
arr2 = [NSArray arrayWithObjects:@"one",@"two",nil]; NSLog(@"初始化多個元素:%@",arr2); // 3.根據另一個數組來建立一個數組 NSArray *arr3 = [NSArray arrayWithArray:arr2]; NSLog(@"複製陣列:%@",arr3); // 4.建立一個數組的例項 NSArray *arr4 = [[NSArray alloc] initWithArray:arr2]; NSLog(@"建立一個數組的例項:%@",arr4);

NSArray陣列中常用方法

  • 獲取陣列長度
int
count = [arr2 count]; NSLog(@"陣列長度:%d",count);
  • 訪問某個元素
// 訪問某個元素
NSString *element = [arr2 objectAtIndex:1];
NSLog(@"第2個元素是:%@",element);
  • 在原來的陣列上追加一個元素,返回新的陣列
NSArray *addArr = [arr2 arrayByAddingObject:@"three"];
NSLog(@"在原來的陣列上追加一個元素,返回新的陣列:%@",addArr);
  • 用指定的字串將陣列拼接成一個字串
NSString *strArr = [addArr componentsJoinedByString:@"#"];
NSLog(@"拼接陣列:%@",strArr);
  • 用指定的字串將陣列拼接成一個字串
NSString *strArr = [addArr componentsJoinedByString:@"#"];
NSLog(@"拼接陣列:%@",strArr);
  • 判斷陣列中是否包含某個字串
BOOL flag = [addArr containsObject:@"one"];
if (flag) {
   NSLog(@"包含這個字串");
}
  • 通過元素找到陣列中的元素角標
int index = [addArr indexOfObject:@"three"];
NSLog(@"元素位置:%d",index);// 找不到會返回-1
  • 找到陣列第一個元素
NSString *firstEle = [addArr firstObject];
NSLog(@"陣列第一個元素:%@",firstEle);
  • 找到陣列最後一個元素
NSString *lastEle = [addArr lastObject];
NSLog(@"陣列的最後一個元素:%@",lastEle);

NSMutableArray陣列中常用方法

  • 初始化長度為5,但是長度可以改變
NSMutableArray *mArr = [NSMutableArray arrayWithCapacity:5];
  • 向陣列中新增一個元素
[mArr addObject:@"one"];
[mArr addObject:@"three"];
[mArr addObject:@"fore"];
NSLog(@"向陣列中新增一個元素:%@",mArr);
  • 向陣列中新增陣列
NSArray *arr = [NSArray arrayWithObjects:@"aaa",@"bbb",@"ccc", nil];
[mArr addObjectsFromArray:arr];
NSLog(@"向陣列中新增陣列:%@",mArr);
  • 向指定位置插入一個元素
[mArr insertObject:@"two" atIndex:1];
NSLog(@"向指定位置插入一個元素:%@",mArr);
  • 移除指定元素
[mArr removeObject:@"one"];
NSLog(@"移除指定元素:%@",mArr);
  • 移除指定角標的元素
[mArr removeObjectAtIndex:2];
NSLog(@"移除指定角標的元素:%@",mArr);
  • 移除指定範圍的元素
[mArr removeObjectsInRange:NSMakeRange(0, 1)];
NSLog(@"移除指定範圍的元素:%@",mArr);
  • 移除最後一個元素
[mArr removeLastObject];
NSLog(@"移除最後一個元素:%@",mArr);
  • 移除所有的元素
[mArr removeAllObjects];
NSLog(@"移移除所有的元素:%@",mArr);
  • 刪除陣列中的子陣列
[mArr removeObjectsInArray:arr];
NSLog(@"刪除陣列中的子陣列:%@",mArr);
  • 替換指定下標的元素
[mArr addObject:@"hello"];
[mArr replaceObjectAtIndex:0 withObject:@"replace"];
NSLog(@"替換指定下標的元素:%@",mArr);
  • 陣列的遍歷
// for迴圈遍歷
[mArr addObjectsFromArray:arr];
for (int i = 0; i<[mArr count]; i++) {
    NSLog(@"for迴圈遍歷:%d:%@",i,[mArr objectAtIndex:i]);
}
// for-in遍歷
for(NSString *el in mArr){
    NSLog(@"for-in 遍歷:%@",el);
}
// 當不確定陣列中元素型別時,用id來定義變數型別,且變數不加*
for(id el in mArr) {
    NSLog(@"for-in 遍歷:%@",el);
}