如何从nsmutablearray中删除最多一个对象?

时间:2013-04-02 12:38:02

标签: objective-c nsmutablearray

我想将一堆对象插入到NSMutableArray中。然后我会在适合的时候逐个删除它们。必须删除每个插入的对象。

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

我该怎么做?

5 个答案:

答案 0 :(得分: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 :(得分:1)

您正在寻找的任何这些功能吗?

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

答案 2 :(得分:1)

[myMutableArray removeObjectAtIndex: 0];

[myMutableArray removeLastObject];

分别删除第一个和最后一个对象。

答案 3 :(得分:1)

我不认为[NSMutableArray removeObject:]删除所有出现的设计是好的,但我们可以先使用indexOfObject:获取索引然后使用removeObjectAtIndex:删除对象来避免它

答案 4 :(得分: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);

    }