来自NSArray的NSMutableArray的NSMutableArray

时间:2012-05-30 17:21:54

标签: objective-c

我在NSArray中有很多对象。我想重新构造NSMutableArray的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 个答案:

答案 0 :(得分:1)

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

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

也许您只需要制作一个新实例[someArray removeAllObjects]

而不是someArray = [[NSMutableArray alloc] init]

然后在你的for循环之后,确保在someArray中添加剩下的内容:

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

答案 1 :(得分: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];

答案 2 :(得分:1)

在执行类似操作后,我遇到了与空数组非常类似的问题。在你添加数组时,它看起来像这样......

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

这对我有用!因为你添加对someArray的引用然后删除所有对象,因此它是空的。通过添加它arrayWithArray,您可以复制数据,因此删除行形式将其留在另一行中。 :)

血浆

答案 3 :(得分: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);

这是终端的输出.. enter image description here

希望它有所帮助!!读得好!