Подтвердить что ты не робот

NSMutableArray - удалить дубликаты

Я попытался сделать это: Values = [[NSSet setWithArray:Values] allObjects]; и не sucess,

Спасибо

4b9b3361

Ответ 1

Ваш метод должен работать, за исключением того, что он возвращает NSArray вместо NSMutableArray. Вы можете использовать

[values setArray:[[NSSet setWithArray:values] allObjects]];

установить values в содержимое нового массива.

Ответ 2

Обратите внимание, что метод NSSet может удалить любой порядок, который у вас есть в NSArray. Вам может потребоваться выполнить цикл через ваш массив, чтобы сохранить порядок. Что-то вроде этого:

NSMutableArray* uniqueValues = [[NSMutableArray alloc] init]; 
for(id e in Values)
{
    if(![uniqueValues containsObject:e])
    {
        [uniqueValues addObject:e];
    }
}

Ответ 3

NSMutableArray* myArray =
[[NSMutableArray alloc]initWithObjects:
@"red",@"blue",@"red",@"green",@"yellow", @"33", @"33",@"red", @"123", @"123",nil];

NSOrderedSet *mySet = [[NSOrderedSet alloc] initWithArray:myArray];
myArray = [[NSMutableArray alloc] initWithArray:[mySet array]];

NSLog(@"%@",myArray);

Ответ 4

Мы можем использовать кодировку значений клавиш:

uniquearray = [yourarray valueForKeyPath:@"@distinctUnionOfObjects.fieldNameTobeFiltered"];

Пожалуйста, обратитесь к следующей статье для полного понимания

Параметры коллекции KVC