如何在二维数组中保存两个数组?

时间:2014-07-23 08:04:06

标签: ios objective-c arrays multidimensional-array

我是iOS Dev的新手。我想在二维数组中保存两个不同的数组(array1& array2)。我知道如何直接在二维数组中保存数据,但不能将两个不同的数组保存在一个数组中。

NSString* path = [[NSBundle mainBundle] pathForResource:@"Aasvogel" ofType:@"txt"];
NSString* content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];

NSArray* foo = [content componentsSeparatedByString: @","];

NSMutableArray *array1 = @[], *array2 = @[];
for ( int i = 0; i < [foo count]; i++ )
{
    NSString* day = foo[i];
    if ( i % 2 == 0 ) { [array1 addObject:day];}
    else { [array2 addObject:day];}
}
// and here i have populated two arrays (array1 and array2)
// Now i want to save these arraya in below two dimensional array (dataArray) atIndex:0 and at Index:1


NSMutableArray *dataArray = [[NSMutableArray alloc] initWithCapacity: 2];
[dataArray addObject:[NSMutableArray arrayWithObjects:@"e",
                                                         @"el",
                                                         @"ale",
                                                         @"vela",
                                                         @"gavel",nil] atIndex:0];

[dataArray addObject:[NSMutableArray arrayWithObjects:@"Represents 50 in Roman numeral",
                                                         @"Building Wing",
                                                         @"Pub Brew",
                                                         @"Thin Parchment or membranes",
                                                         @"chairperson's hammer",nil] atIndex:1];

6 个答案:

答案 0 :(得分:1)

我最近在我的应用程序中实现了2D数组。请查看下面的代码2DArray

int capacity;
@property (nonatomic, strong) NSMutableArray *outerArray;

#define kCRL2DArrayEmptyKey @"kCRL2DArrayEmptyKey"

- (id) initWithRows:(int)x columns:(int)y
{
    if (self = [super init])
    {
        capacity = y;
        self.outerArray = [NSMutableArray array];
        for (int i = 0; i < x; i++) {
            NSMutableArray *innerArray = [NSMutableArray array];
            for (int j = 0; j < y; j++) {
                [innerArray addObject:kCRL2DArrayEmptyKey];
            }
            [self.outerArray addObject:innerArray];
        }
    }
    return self;
}

答案 1 :(得分:0)

我不确定iOS中的二维数组,但如果我是你,我会将两个数组保存在字典中,例如

 NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
 [dict setvalue:yourArray forKey:@"FirstArray"];
 [dict setvalue:yourSecondArray forKey:@"SecondArray"];

并相应地使用它。

答案 2 :(得分:0)

没有两个(或更多)维NSArray这样的东西。如果您真的需要iOS或OS X中的 n - 维数组对象,您当然可以自己动手,或者您可以创建NSArray NSArray个实例(哪些是列,哪些是行完全取决于你)。在这种情况下,您可以例如通过执行

添加项目
[[outerArray objectAtIndex:0] addObject:@"Foo"];
[[outerArray objectAtIndex:1] addObject:@"Bar"];

那就是说,对于你正在处理的问题,它看起来好像NSDictionary可能更合适,例如使用密钥@"e", @"el"和值@"Represents 50 in Roman numerals", @"Building Wing"

如果您担心NSDictionary的键未按排序顺序保存,则可以始终将键提取为数组并对其进行排序。或者,如果密钥定期更改,您可能希望使用更复杂的方法(例如,在添加到NSDictionary时保留单独排序的密钥数组并将它们插入正确的位置。)

另外,您知道在现代Objective-C中,您可以编写例如。

@[ @"a", @"b", @"c" ]

@{ @"a": @1, @"b": 2 }

而不是您在上面使用的非常详细的表单?

答案 3 :(得分:0)

这是你如何在2d数组中添加任何东西,即objective-c

中的数组数组
NSMutableArray *array 1 = [[NSMutableArray alloc]init];
NSMutableArray *array 2;

for(int col = 0;col <5;col++){

       array2 = [[NSMutableArray alloc]init];
         for(int row = 0;row<5;row++){

              [array2 addObject:myItems];

    }
       [array1 addObject:array2];

}

希望这会有所帮助

答案 4 :(得分:0)

你可以试试这个

NSArray * firstArray, *secondArray;
NSArray * mainArray= [[NSArray alloc]initWithObjects: firstArray, secondArray, nil];

答案 5 :(得分:-1)

使用for循环从2个不同的数组生成2d数组, 遵循这个结构

int i, j;
for(i = 0; i < nrows; i++)
    {
    for(j = 0; j < ncolumns; j++)
        array[i][j] = 0;
    }
}

可能会帮助你