2013-04-02 52 views
0

我想插入一堆对象到NSMutableArray中。然后,我会在适合的时候一个接一个地删除它们。每个插入的对象都必须删除。如何从nsmutablearray中删除至多一个对象?

但是,如果我有同一个对象的多个副本,我只想删除其中的一个。

我该怎么做?

回答

3
NSMutableArray *arr = [@[@1, @1, @5, @6, @5] mutableCopy]; // a copy of your array 
NSMutableSet *removedObjects = [NSMutableSet setWithArray:arr]; 
for (id obj in removedObjects) { 
    [arr removeObjectAtIndex:[arr indexOfObject:obj]]; // removes the first identical object 
} 

还要注意的是,如果对象避免你的数组充满了自定义对象,你需要实现hashisEqual:,以便比较可以工作。

1

是你正在寻找的任何这些功能?

[array removeObjectAtIndex:(NSUInteger)]; 
[array removeLastObject]; 
[array removeObject:(id)]; 
+0

'removeObject:'删除对象的所有实例。其他两个是所期望的。 –

+0

是的,我只是把它放在那里好的措施 – Fonix

1
[myMutableArray removeObjectAtIndex: 0]; 

[myMutableArray removeLastObject]; 

要分别取出第一个和最后的对象。

1

我不认为这是一个很好的设计[NSMutableArray removeObject:]删除所有的出现次数,但我们可以先用indexOfObject:得到一个索引,然后取出用removeObjectAtIndex:

0

我更喜欢使用对象的索引;它会返回数组中第一个出现的对象索引

NSMutableArray * first = [@[@"2",@"3",@"4",@"5"] mutableCopy];//your first array 

    NSMutableArray * willBeAppend = [@[@"2",@"3",@"4",@"5"] mutableCopy];//new objects to append 

    [first addObjectsFromArray:willBeAppend];//append new objects 

    id objectToBeRemoved = @"3";// object will be removed 

    NSInteger objIx = [first indexOfObject:objectToBeRemoved];// index of object 

    if (objIx != NSNotFound) { 

     [first removeObjectAtIndex:objIx]; //remove object 


     NSLog(@"%@",first); 

    } 
相关问题