2014-07-23 89 views
0

我是iOS Dev的新手。我想在2維數組中保存兩個不同的陣列(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]; 
+2

兩個數組是不夠的,建立一個二維數組。即'array1 + array2'不是'array1 * array2'。或者它只是'[dataArray addObject:array1]; [dataArray addObject:array2];'?不太清楚... – trojanfoe

+0

@trojanfoe但我使用它作爲硬編碼,因爲你可以看到我分配dataArray的代碼的第二部分,我用值填充了數組。 –

+0

可能的重複: http://stackoverflow.com/questions/10527521/how-to-produce-2-dimensional-array-in-objective-c http://stackoverflow.com/questions/638129/how-to -declare-a-two-dimensional-array-of-string-type-in​​-objective-c http://stackoverflow.com/questions/4362740/creating-a-two-dimensional-array-in-objective-c – Szu

回答

0

你可以試試這個

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

我不知道關於iOS的2維數組,但如果我是你,我會在詞典中如

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

被保存在兩個陣列和相應地使用它。

-1

使用for循環,從2個不同的陣列生成二維數組, 遵循這一意象結構

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

也許它會幫助你

+0

-1:他正在使用NSString NOT原始數據類型的數組。此外,你還沒有寫任何關於數組的東西,整個代碼看起來像是從C代碼中獲取的。 – Szu

0

有沒有這樣的東西兩個(或更多)維NSArray 。如果您真的需要iOS或OS X中的維數組對象,那麼您當然可以自己製作對象,否則可以創建一個NSArrayNSArray實例(這些實例是列,哪些行完全取決於您) 。在這種情況下,你可以通過做

[[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 } 

,而不是你上面使用非常詳細的形式?

0

這是如何U在一個二維數組在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]; 

} 

希望這有助於

1

我最近實施的二維數組到我的應用程序。請檢查下面的代碼可在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; 
} 
相關問題