0

オブジェクトの束を NSMutableArray に挿入したいと考えています。それから、時間に合わせてそれらを 1 つずつ削除します。挿入されたすべてのオブジェクトを削除する必要があります。

ただし、同じオブジェクトのコピーが複数ある場合は、そのうちの 1 つを削除したいだけです。

どうすればいいですか?

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
}

また、配列がカスタム オブジェクトで満たされている場合は、実装する必要があるため、比較が機能することにも注意してhashくださいisEqual:

于 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 に答える