2013-04-02 3 views

답변

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 
} 

는 또한 경우에주의 사용하여 객체를 제거 후 indexOfObject:를 사용하여 인덱스를 받고하여 피할 수에 대한 좋은 디자인이라고 생각하지 않습니다 배열이 사용자 정의 객체로 채워지면 비교가 작동 할 수 있도록 hashisEqual:을 구현해야합니다.

1

은 당신이 찾고있는 기능 중 하나입니다.

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

'removeObject :'는 객체의 모든 인스턴스를 제거한다. 다른 두 가지는 원하는 것입니다. –

+0

예, 좋은 측정을 위해 거기에 넣었습니다. – Fonix

1
[myMutableArray removeObjectAtIndex: 0]; 

또는

[myMutableArray removeLastObject]; 

는 각각 첫 번째와 마지막 개체를 제거합니다.

1

나는 [NSMutableArray removeObject:] 모든 발행 수를 제거하는하지만 우리가 처음 removeObjectAtIndex:

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); 

    } 
관련 문제