NSMutableArray - Удалить дубликаты - PullRequest
23 голосов
/ 07 октября 2010

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

Спасибо

Ответы [ 4 ]

44 голосов
/ 07 октября 2010

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

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

, чтобы установить values для содержимого нового массива.

23 голосов
/ 07 октября 2010

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

NSMutableArray* uniqueValues = [[NSMutableArray alloc] init]; 
for(id e in Values)
{
    if(![uniqueValues containsObject:e])
    {
        [uniqueValues addObject:e];
    }
}
20 голосов
/ 13 августа 2013
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);
1 голос
/ 27 июля 2015

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

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

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

Параметры сбора KVC

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