我是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];
我最近在我的应用程序中实现了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;
}
你可以试试这个
NSArray * firstArray, *secondArray;
NSArray * mainArray= [[NSArray alloc]initWithObjects: firstArray, secondArray, nil];
我不确定iOS中的二维数组但如果我是你,我会将这两个数组保存在字典中,比如
NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
[dict setvalue:yourArray forKey:@"FirstArray"];
[dict setvalue:yourSecondArray forKey:@"SecondArray"];
不存在二维(或多维)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 }
而不是上面使用的非常冗长的表单?
这是在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];
}
希望能有所帮助
使用for循环从两个不同的数组生成2d数组遵循以下结构
int i, j;
for(i = 0; i < nrows; i++)
{
for(j = 0; j < ncolumns; j++)
array[i][j] = 0;
}
}
也许会对你有帮助