2012-06-05 54 views
0

我正在嘗試創建和訪問2D NSMutableArray中的數據。我明白我必須將數組嵌套到數組中。事情是我無法訪問不同的1D陣列。訪問2D NSMutableArray Objective-C

下面是代碼初始化二維數組,所有的數組是NSMuttableArray:

if(simSections == nil || [simSections count] == 0) { 
    simSections = [[NSMutableArray alloc] init]; 

    for (int i = 0; i < 8 ; i++) { 
     simData[i] = [[NSMutableArray alloc] init]; 
     [simSections addObject:simData[i]]; 
    } 
} 

而現在我想在第一個數組的第一個空間對象添加:

[[simSections objectAtIndex:0] addObject:[NSString stringWithString:@"Test"]]; 

我得到這個錯誤,但我不明白爲什麼simSections陣列將是空的,因爲我添加了simData陣列。

*終止應用程序由於未捕獲的異常 'NSRangeException',原因是: '* - [NSMutableArray的objectAtIndex:]:索引0超越界限空陣'

你有什麼想法?我會非常樂意幫助您,

謝謝。

回答

0

檢查你的simSections數組。看起來它是空的

+0

但是,如果我做了以下「[simSections addObject:simData [i]];」它不是非空嗎? – bentroc

+0

檢查調試器,在此調用之前,您的數組包含所有對象 – Morion

0

您的代碼填充simSections似乎對我來說。那麼我懷疑問題在於那個代碼實際上並沒有被調用,然後這個對象就是[simSections objectAtIndex:0]

將日誌記錄添加到這兩個代碼段。日誌selfsimSections以確保它們與您期望的相同。您可能希望使用「%p」格式說明符而不是「%@」來登錄,因爲您只是對其指針值感興趣。

+0

謝謝您的回答,不幸的是,問題似乎並不存在,因爲我在以下兩種方法中記錄simSections指針時遇到以下情況:2012-06 -06 10:22:28.158 GlassCockpit [8584:707] arrayAlloc:0x7c71810 2012-06-06 10:22:38.807 GlassCockpit [8584:707] udp:0x7c71810 – bentroc

+0

OK。出於好奇,你的片段中有什麼是'simData'?當地的,伊娃,...?也顯示它的聲明。同時顯示'simSections'的聲明。順便說一下,這是否使用ARC? –

+0

simData實例變量,聲明如下:「NSMutableArray * simData [100];」。對於也是ivar的simSections:「NSMutableArray * simSections;」。該項目沒有使用ARC。 – bentroc