我在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
为空。
答案 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);
这是终端的输出..
希望它有所帮助!!读得好!