我在Array中有5个对象,想要在循环中删除2个但是我在下面的代码中有一个小问题
NSMutableArray *totalPages = [[NSMutableArray alloc] init];
[totalPages addObject:@"Test1"];
[totalPages addObject:@"Test2"];
[totalPages addObject:@"Test3"];
[totalPages addObject:@"Test4"];
[totalPages addObject:@"Test5"];
int currentPage = 2;
for (int x = 0; x < [totalPages count]; x++) {
//int pageIds = [[totalPages objectAtIndex:x] intValue];
//NSLog(@"%d",pageIds);
NSLog(@"Array Count %d", (int)[totalPages count]);
NSLog(@"Current Page %d", currentPage);
NSLog(@"Current Iterator Value %d", x);
if (x > currentPage) {
[totalPages removeObjectAtIndex:x];
NSLog(@"Array Count %d", (int)[totalPages count]);
NSLog(@"Number of Pages to be removed %d", x);
}
}
因为我想删除“Test4”和“Test5”,但我的上面的代码只删除了“Test5”,如果我将此逻辑保留为
if (x >= currentPage)
所以它删除了我的“Test4”和“Test5”对象,但当int currentPage = 0时逻辑失败;那么,当数组中的对象被动态添加并且currentPage = 0时,删除Test4和Test5的推荐方法是什么?所以Arrays只有一个Object作为页面。
答案 0 :(得分:2)
当你从中删除元素时,数组会发生变化,它会缩短。
调整你的for语句并向后计数,这应该为你解决问题。