1. ホーム
  2. ios

[解決済み] Objective-CでNSMutableArrayから重複する値を削除する最良の方法は?

2022-04-28 20:46:48

質問

重複する値を削除する最適な方法 ( NSString からの NSMutableArray Objective-Cで?

これが一番簡単で正しい方法なのでしょうか?

uniquearray = [[NSSet setWithArray:yourarray] allObjects];

解決方法は?

あなたの NSSet オブジェクトの順序を気にしないのであれば、この方法がベストですが、順序を気にしないのであれば、なぜオブジェクトを NSSet を使用します。

私は2009年に以下の答えを書きましたが、2011年にAppleは以下のように付け加えました。 NSOrderedSet をiOS 5とMac OS X 10.7に搭載しました。アルゴリズムだったものが、今では2行のコードになっています。

NSOrderedSet *orderedSet = [NSOrderedSet orderedSetWithArray:yourArray];
NSArray *arrayWithoutDuplicates = [orderedSet array];


もし順番が気になり、iOS 4以前で動作している場合は、配列のコピーにループをかけてください。

NSArray *copy = [mutableArray copy];
NSInteger index = [copy count] - 1;
for (id object in [copy reverseObjectEnumerator]) {
    if ([mutableArray indexOfObject:object inRange:NSMakeRange(0, index)] != NSNotFound) {
        [mutableArray removeObjectAtIndex:index];
    }
    index--;
}
[copy release];