0

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

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

我该怎么做?

4

5 回答 5

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:以便比较可以工作。

于 2013-04-02T12:47:18.190 回答
1

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

[array removeObjectAtIndex:(NSUInteger)];
[array removeLastObject];
[array removeObject:(id)];
于 2013-04-02T12:41:05.493 回答
1
[myMutableArray removeObjectAtIndex: 0];

或者

[myMutableArray removeLastObject];

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

于 2013-04-02T12:42:02.347 回答
1

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

于 2013-04-02T12:42:26.833 回答
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);

    }
于 2013-04-02T12:54:00.230 回答