NSSet
делает именно то, что вы пытаетесь сделать: это (неупорядоченный) набор уникальных предметов. Таким образом, вы можете найти уникальные элементы в вашем массиве следующим образом:
NSSet *uniqueElements = [NSSet setWithArray:myArray];
// iterate over the unique items
for(id element in uniqueElements) {
// do something
}
NSSet
, скорее всего, использует алгоритм хеширования, чтобы сделать вставку O (1) (по сравнению с O (n ^ 2), чтобы проверить, является ли каждый элемент уникальным итерацией), но документация Apple не дает такой гарантии Вы, вероятно, не должны рассчитывать на эту деталь реализации.
Если по какой-то причине вам необходимо сохранить уникальные элементы в отсортированной (упорядоченной) коллекции, вы можете превратить набор обратно в массив с помощью -[NSSet allObjects]
, а затем отсортировать полученный массив.