NSArray:删除除前 20 个元素之外的所有元素



我有一个可能有数百个元素的NSArray。我想删除除前 20 个元素之外的所有元素。想法?

如果您的数组是 NSArray,则无法删除对象,因为它是不可变的。你需要做一些类似Neo的答案的事情。 如果您的阵列是 NSMutableArray,则可以使用以下行来获取前 20 项:

[myArray removeObjectsInRange:NSMakeRange(20, myArray.count - 20)];

您可以提取前 20 个项目,然后重新分配源数组:

NSArray *myHugeArray = [[NSArray alloc] initWithItems:...] // An array with, say, 1000 items
NSArray *tmpArray = [myHugeArray objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 20)]];
[myHugeArray release];
myHugeArray = [tmpArray retain];

假设你的NSArray是你的数组,这样做

NSMutableArray *temp=[[NSMutableArray alloc]initWithArray:yourArray];
for(int i=0; i<20;i++){
    [temp addObject:[yourArray objectAtIndex:i]];
}
yourArray=[NSArray arrayWithArray:temp];