我有一个基本问题。我需要在循环中使用中间数组。这是我的代码:
NSMutableArray *interArray = [[NSMutableArray alloc] initWithCapacity:2];
NSMutableArray *finalyArray = [[NSMutableArray alloc] init];
NSInteger a;
for(int j=0; j<5; j++)
{ [interArray removeAllObjects];
for(int i=0; i<2; i++)
{
a = [array ObjectAtInde:i]; // this is existing array
[interArray addObject:a];
}
[finalyArray addObject:interArray];
}
但是当我删除中间数组中的对象时,我在finaly数组中得到空数组。怎么解决?感谢
答案 0 :(得分:1)
它无法正常工作的原因是因为interArray
是对您清空并填充循环然后添加到finalyArray
的对象的引用,但是您要添加每次都使用相同的中间数组。
你想要做什么呢?在循环中创建一个新的中间数组,因此每个中间数组都是一个单独的对象:
NSMutableArray *finalyArray = [[NSMutableArray alloc] init];
NSInteger a;
for(int j=0; j<5; j++)
{
NSMutableArray *interArray = [[NSMutableArray alloc] initWithCapacity:2];
for(int i=0; i<2; i++)
{
a = [array ObjectAtIndex:i]; // this is existing array
[interArray addObject:a];
}
[finalyArray addObject:interArray];
}
(请注意,此代码无论如何都无法正常工作,因为如果不先将NSInteger
包装在NSNumber
对象中,就无法将{{1}}存储在集合类中。