Как я могу заставить NSMutableArray принимать уникальные значения?
NSMutableArray *sectionTitles;
[sectionTitles addObject:due];
Как добавить уникальные значения в массив?
Ответы
Ответ 1
См. ответ Rudolph
Мой старый ответ ниже устарел и был на некоторое время. Ссылка Рудофа на NSOrderedSet
/NSMutableOrderedSet
является правильной, поскольку эти классы были добавлены после этого Q и моего A.
Старый ответ
Как сказал Ричард, NSMutableSet
работает хорошо, но только если вам не нужно поддерживать упорядоченную коллекцию. Если вам нужна упорядоченная коллекция, вам будет проще проверить содержимое:
if (![myMutableArray containsObject:newObject])
[myMutableArray addObject:newObject];
Обновление на основе комментария
Вы можете обернуть это методом, подобным -addUniqueObject:
, и поместить его в категорию NSMutableArray .
Ответ 2
Подробнее 2012-й ответ (в случае, если кто-то наткнулся на это в будущем):
Используйте NSOrderedSet
и NSMutableOrderedSet
.
Заметка о производительности прямо из NSOrderedSet
docs:
Вы можете использовать упорядоченные наборы как альтернативу массивам, когда порядок элементов важен, а производительность при проверке того, содержит ли объект в наборе, - это тестирование для членства в массиве медленнее, чем тестирование для членство в наборе.
Ответ 3
Используйте NSMutableSet
, это лучше всего для этих ситуаций
Справочник iOS
Справочник по Mac OSX