Objective-C 二维数组详解

来源:互联网 发布:专业淘宝刷销量 编辑:程序博客网 时间:2024/04/28 06:32

     在实际的项目开发中,二维数组也是常常用到的数据结构。OC中的二维数组也是通过一维数组来建立的,今天我们来详解一下如何在OC中使用二维数组。

【使用NSArray初始化二维数组】

使用NSArray初始化的一维数组和二维数组都是不可变数组。

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {  @autoreleasepool {            //定义2个一维数组;    NSArray *firstRow = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil];    NSArray *secondRow = [[NSArray alloc] initWithObjects:@"4",@"5",@"6", nil];        //使用一维数组来初始化二维数组;    NSArray *my2DArray = [[NSArray alloc] initWithObjects:firstRow,secondRow, nil];    //输出二维数组对象;    NSLog(@"二维数组:%@",my2DArray);        //遍历二维数组;    for (int i = 0; i < [my2DArray count]; i++) {      for (int j = 0; j < firstRow.count; j++) {        NSLog(@"二维数组元素:%@",[[my2DArray objectAtIndex:i] objectAtIndex :j]);      }    }      }  return 0;}

打印结果如下:



【使用NSMutableArray初始化二维数组】

使用NSMutableArray初始化的一维数组和二维数组都是可变的,可以进行修改和插入操作;

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {  @autoreleasepool {        NSMutableArray *firstRow = [[NSMutableArray alloc] initWithObjects:@"11",@"22",@"33", nil];    NSMutableArray *secondRow = [[NSMutableArray alloc] initWithObjects:@"44",@"55",@"66", nil];    NSMutableArray *my2DArray = [[NSMutableArray alloc] initWithObjects:firstRow,secondRow, nil];    //插入一个数据    [[my2DArray objectAtIndex:0] insertObject:@"iOS" atIndex:3];    NSLog(@"%@",my2DArray);        [[my2DArray objectAtIndex:1] insertObject:@"OC" atIndex:0];    NSLog(@"%@",my2DArray);          }  return 0;}
打印结果如下:


【使用for-in快速遍历二维数组】

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {  @autoreleasepool {            //定义2个一维数组;    NSArray *firstRow = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil];    NSArray *secondRow = [[NSArray alloc] initWithObjects:@"4",@"5",@"6", nil];        //使用一维数组来初始化二维数组;    NSArray *my2DArray = [[NSArray alloc] initWithObjects:firstRow,secondRow, nil];        //遍历二维数组;    for (int i = 0; i < [my2DArray count]; i++) {      for (int j = 0; j < firstRow.count; j++) {        NSLog(@"二维数组元素:%@",[[my2DArray objectAtIndex:i] objectAtIndex :j]);      }    }        //打印某个维度的一维数组    NSLog(@"一维数组:%@",[my2DArray objectAtIndex:0]);        //使用for-in快速遍历二维数组中的一维数组    for (NSArray *arr in my2DArray) {      NSLog(@"二维数组中的一维数组:%@",arr);    }            //使用for-in快速遍历二维数组中的每一个元素    for (NSArray *arr in my2DArray) {      for (NSString *str in arr) {        NSLog(@"for-in结果:%@",str);      }    }          }  return 0;}

打印结果:



github主页:https://github.com/chenyufeng1991  。欢迎大家访问!


1 1