我想将一堆对象插入 NSMutableArray。然后我会在合适的时候将它们一一移除。必须删除每个插入的对象。
但是,如果我有同一个对象的多个副本,我只想删除其中一个。
我该怎么做?
我想将一堆对象插入 NSMutableArray。然后我会在合适的时候将它们一一移除。必须删除每个插入的对象。
但是,如果我有同一个对象的多个副本,我只想删除其中一个。
我该怎么做?
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
}
另请注意,如果您的数组中填充了自定义对象,则需要实现hash
,isEqual:
以便比较可以工作。
您正在寻找这些功能中的任何一个吗?
[array removeObjectAtIndex:(NSUInteger)];
[array removeLastObject];
[array removeObject:(id)];
[myMutableArray removeObjectAtIndex: 0];
或者
[myMutableArray removeLastObject];
分别删除第一个和最后一个对象。
我认为[NSMutableArray removeObject:]
删除所有事件不是一个好的设计,但我们可以通过首先使用获取索引indexOfObject:
然后使用删除对象来避免它removeObjectAtIndex:
我更喜欢使用对象索引;它将返回第一次出现在数组中的对象的索引
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);
}