2012-05-30 78 views
0

我在NSArray中有許多對象。我想用NSArray中的每個NSArray中的6個元素重新提取NSMutableArray的NSMutableArray。我該怎麼做?來自NSArray的NSMutableArrays的NSMutableArray

編輯 我的代碼:

NSArray *newsList = [mynode6 findChildTags:@"td"]; //result of site parsing 
NSMutableArray *someArray = [[NSMutableArray alloc] init]; 
int i=0; 
for (HTMLNode *news in newsList) { 
    [someArray addObject:[newsList objectAtIndex:news]; 
    i++; 
    if (i==5) { 
     i=0; 
     [self.valueArray addObject:someArray]; 
     [someArray removeAllObjects]; 
    } 
} 

valueArray是我的主要的NSMutableArray。此代碼不起作用,valueArray爲空。

+4

你能舉一個例子說明你有什麼和你想要的嗎?它看起來不像你試圖實現的映射是微不足道的。 – dasblinkenlight

回答

1

快速修復:

分配你的循環中的數組:

NSArray *newsList = [mynode6 findChildTags:@"td"]; //result of site parsing 
NSMutableArray *someArray = [[NSMutableArray alloc] init]; 

int i=0; 
for (HTMLNode *news in newsList) { 
    [someArray addObject:[newsList objectAtIndex:news]; 

    if (++i == 5) { 
     i = 0; 
     [self.valueArray addObject:someArray]; 
     [someArray release]; 
     someArray = [[NSMutableArray alloc] init]; 
    } 
} 

[someArray release]; 
+0

我的代碼錯誤'終止應用程序由於未捕獲的異常'NSRangeException',原因:'*** - [__ NSArrayM objectAtIndex:]:索引120超出界限[0..119]'' – RomanHouse

1

這聽起來像你的做法是對一般的程序員太遲鈍了......但是,唉......

你真的想重用在你上面列出的方式someArray?將someArray作爲valueArray的對象添加,然後稍後移除所有對象將會使您的valueArray充滿空數組。更糟的是,你所添加的同一陣列的實例,每一次......

也許代替[someArray removeAllObjects]你只是做一個新的實例someArray = [[NSMutableArray alloc] init]

再經過你的for循環,一定要添加任何剩下的someArray

if(i) { 
    [self.valueArray addObject:someArray]; 
} 
1

在做類似的事情之後,我有一個非常類似於空數組的問題。在你添加陣列的地方看起來像這樣..

[self.valueArray addObject:[NSMutableArray arrayWithArray:someArray]]; 

這對我有效!它是因爲你添加了一個對someArray的引用,然後刪除所有的對象,因此它是空的。通過將它添加到arrayWithArray中,您可以製作一份數據的副本,從而刪除行中的行,從而將其留在另一行中。 :)

等離子

1

我無法理解這line.This行是沒有意義的objectAtIndex需要NSInteger的作爲param..I設定UR試圖數組

[someArray addObject:[newsList objectAtIndex:news]; 

中添加HTMLNode元素所以,我覺得你需要更換上述行這樣的..

[someArray addObject:news]; 

我已經做了一些修改編輯我們的代碼片斷和我在邏輯都插(有穿心蓮ED新新聞列表陣列與一些虛擬對象來解釋u對應的邏輯)..

這裏不用編輯後的代碼

NSArray *newsList = [NSArray arrayWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"A",@"B",@"C",@"D",@"E",@"F", nil]; 
    NSMutableArray *valueArray = [[NSMutableArray alloc] init]; 
    NSMutableArray *someArray = [[NSMutableArray alloc] init]; 

    int i=0; 
    for (NSString *news in newsList) { 
    [someArray addObject:news]; 
    i++; 
    if (i==6) { 
     i=0; 
     [valueArray addObject:someArray]; 
     NSLog(@"%@",someArray); 
     [someArray release]; 
     someArray = [NSMutableArray new]; 
    } 
    } 

NSLog(@"%@",valueArray); 

這裏是從端子的輸出.. enter image description here

希望它幫助!有一個很好的閱讀!