NSArray不删除对象

时间:2014-09-21 17:44:09

标签: objective-c iphone arrays nsarray

我在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作为页面。

1 个答案:

答案 0 :(得分:2)

当你从中删除元素时,数组会发生变化,它会缩短。

调整你的for语句并向后计数,这应该为你解决问题。