我想插入一堆对象到NSMutableArray中。然后,我会在适合的时候一个接一个地删除它们。每个插入的对象都必须删除。如何从nsmutablearray中删除至多一个对象?
但是,如果我有同一个对象的多个副本,我只想删除其中的一个。
我该怎么做?
我想插入一堆对象到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);
}
'removeObject:'删除对象的所有实例。其他两个是所期望的。 –
是的,我只是把它放在那里好的措施 – Fonix