Добавить объект в массив, только если объект еще не - PullRequest
2 голосов
/ 02 марта 2012

Я хочу добавить объект в массив, только если массив уже не содержит этот объект.Как сделать противоположность метода containsObject в NSArray?

Ответы [ 3 ]

11 голосов
/ 02 марта 2012

Используйте NSMutableOrderedSet, чей метод addObject: делает именно то, что вы хотите:

Добавляет данный объект в изменяемый упорядоченный набор, если он еще не является членом.

6 голосов
/ 03 марта 2012

Вот как бы я это сделал:

if (![myArray containsObject:objectToAdd]){
[myArray addObject:objectToAdd];
}

Подробнее здесь:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html

Обратите внимание, что, поскольку метод containsObject запрашивает каждый объект в массиве, существуют некоторые соображения производительности при использовании его в больших массивах.

0 голосов
/ 02 марта 2012

если ваш объект типа NSString*, вы можете выполнить быстрое перечисление, как это

BOOL found = NO;

for(NSString *object in YourArray)
{
 if([object isEqualtoString:@"My text"])
 {
 found = YES;
 }
}
if(!found)
{
//addObject
}

Есть много методов isEqual в target-c для разных типов данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...