2

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

4

3 回答 3

5

如果您的数组是 NSArray,那么您不能删除对象,因为它是不可变的。您需要做类似 Neo 的回答。如果您的数组是 NSMutableArray,则可以使用以下行获取前 20 项:

[myArray removeObjectsInRange:NSMakeRange(20, myArray.count - 20)];
于 2012-10-01T15:35:40.633 回答
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];
于 2012-10-01T11:13:45.360 回答
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];
于 2012-10-01T11:12:30.540 回答