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

时间:2012-10-01 11:09:29

标签: objective-c nsarray

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

3 个答案:

答案 0 :(得分:5)

如果您的数组是NSArray,那么您无法移除对象,因为它是不可变的。你需要做一些像Neo的回答。如果您的数组是NSMutableArray,则可以使用以下行获取前20个项目:

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

答案 1 :(得分:1)

您可以提取前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];

答案 2 :(得分:0)

假设您的NSArray是yourArray,请执行此操作

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