Я могу рекомендовать использовать NSOrderedSet (если вам нужен заказ) или NSSet (в противном случае) :
NSOrderedSet *orderedSet = [NSOrderedSet orderedSetWithArray:yourArray];
NSArray *arrayWithoutDuplicates = [orderedSet array];
Или вы можете использовать операторы из KeyValueCording:
uniquearray = [yourarray valueForKeyPath:@"@distinctUnionOfObjects.self"];
Если вы хотите удалить дубликаты своей собственностью, например name
, это действительно просто с помощью этого оператора:
@distinctUnionOfObjects.name
NSSet объявляет программный интерфейс для статических наборов различных
объекты. Вы устанавливаете записи статического набора при его создании, и
после этого записи не могут быть изменены. NSMutableSet, с другой
стороны, объявляет программный интерфейс для динамических наборов различных
объекты. Динамический или изменяемый набор позволяет добавлять и удалять
записи в любое время, автоматически распределяя память по мере необходимости.
Итак, вы можете прочитать о коллекциях какао в Apple Docs
Если вы хотите вставить уникальный объект в массив, это будет стоить O (1) -O (N) , но если вы хотите вставить уникальный объект в Set, это будет стоить 0 (1) , мгновенно .
Подробнее о сложности здесь
В этом случае установить быстрее, чем массив.