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
}
는 또한 경우에주의 사용하여 객체를 제거 후 indexOfObject:
를 사용하여 인덱스를 받고하여 피할 수에 대한 좋은 디자인이라고 생각하지 않습니다 배열이 사용자 정의 객체로 채워지면 비교가 작동 할 수 있도록 hash
과 isEqual:
을 구현해야합니다.
은 당신이 찾고있는 기능 중 하나입니다.
[array removeObjectAtIndex:(NSUInteger)];
[array removeLastObject];
[array removeObject:(id)];
[myMutableArray removeObjectAtIndex: 0];
또는
[myMutableArray removeLastObject];
는 각각 첫 번째와 마지막 개체를 제거합니다.
나는 [NSMutableArray removeObject:]
모든 발행 수를 제거하는하지만 우리가 처음 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