Ответ 1
Ваш метод должен работать, за исключением того, что он возвращает NSArray
вместо NSMutableArray
. Вы можете использовать
[values setArray:[[NSSet setWithArray:values] allObjects]];
установить values
в содержимое нового массива.
Я попытался сделать это: Values = [[NSSet setWithArray:Values] allObjects];
и не sucess,
Спасибо
Ваш метод должен работать, за исключением того, что он возвращает NSArray
вместо NSMutableArray
. Вы можете использовать
[values setArray:[[NSSet setWithArray:values] allObjects]];
установить values
в содержимое нового массива.
Обратите внимание, что метод NSSet
может удалить любой порядок, который у вас есть в NSArray
. Вам может потребоваться выполнить цикл через ваш массив, чтобы сохранить порядок. Что-то вроде этого:
NSMutableArray* uniqueValues = [[NSMutableArray alloc] init];
for(id e in Values)
{
if(![uniqueValues containsObject:e])
{
[uniqueValues addObject:e];
}
}
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);
Мы можем использовать кодировку значений клавиш:
uniquearray = [yourarray valueForKeyPath:@"@distinctUnionOfObjects.fieldNameTobeFiltered"];
Пожалуйста, обратитесь к следующей статье для полного понимания