Лучший способ удалить дубликаты значений из NSMutableArray в Objective-C?

def callmethod(cls, mtd_name):    
    method = getattr(cls, mtd_name)
    method()
144
задан Bhavin Ramani 22 December 2016 в 11:58
поделиться

1 ответ

Ваш подход NSSet является лучшим, если вас не беспокоит порядок объектов, но опять же, если вас не беспокоит порядок, тогда почему вы для начала не храните их в NSSet ?

Я написал ответ ниже в 2009 году; в 2011 году Apple добавила NSOrderedSet в iOS 5 и Mac OS X 10.7. То, что раньше было алгоритмом, теперь представляет собой две строки кода:

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];
239
ответ дан 23 November 2019 в 22:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: