入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Objective-C 二维数组详解

创建时间:2015-11-02 投稿人: 浏览次数:8728

     在实际的项目开发中,二维数组也是常常用到的数据结构。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  。欢迎大家访问!


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。