0

我在 NSArray 中有许多对象。我想重新构造 NSMutableArrays 的 NSMutableArray,每个 NSArray 中有 6 个元素。我该怎么做?

编辑 我的代码:

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

4 回答 4

1

听起来你的方法对你的普通程序员来说太迟钝了……但是唉……

你真的想以someArray上面列出的方式重用吗?添加someArray为对象valueArray然后删除所有对象只会让您valueArray充满空数组。更糟糕的是,您每次都添加相同的数组实例......

也许[someArray removeAllObjects]你不只是创建一个新实例someArray = [[NSMutableArray alloc] init]

然后在你的 for 循环之后,确保添加任何剩余的内容someArray

if(i) {
    [self.valueArray addObject:someArray];
}
于 2012-05-30T17:42:57.673 回答
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];
于 2012-05-30T17:43:01.177 回答
1

在做了类似的事情之后,我对空数组有一个非常相似的问题。在您添加数组时,使其看起来像这样..

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

这对我有用!这是因为您添加了对 someArray 的引用,然后删除了所有对象,因此它为空。通过添加它 arrayWithArray,您可以制作数据的副本,因此从一个中删除行会将它们留在另一个中。:)

等离子体

于 2012-05-30T22:22:33.190 回答
1

我无法理解这一行。这一行没有意义,因为 objectAtIndex 将 NSInteger 作为参数。我想你试图在该数组中添加 HTMLNode 元素

[someArray addObject:[newsList objectAtIndex:news];

所以,我认为你需要像这样替换上面的行..

[someArray addObject:news];

我通过进行一些更改来编辑你的代码片段,并且我已经插入了我的逻辑(创建了一个带有一些虚拟对象的新 newsList 数组来解释你的逻辑)..

这是编辑后的代码

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);

这是终端的输出.. 在此处输入图像描述

希望它有帮助!祝您阅读愉快!

于 2012-07-03T04:40:21.033 回答