24

i tried doing this: Values = [[NSSet setWithArray:Values] allObjects]; and no sucess,

Thanks

4 Answers 4

46

Your method should work, except it returns an NSArray instead of NSMutableArray. You could use

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

to set values to the content of the new array.

Sign up to request clarification or add additional context in comments.

Comments

23

Note that the NSSet method may remove any order you have in your NSArray. You might want to loop thru your array to keep the order. Something like this:

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

Comments

21
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);

Comments

1

We can use Key Value Coding:

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

Please refer the below article for complete understanding

KVC Collection Parameters

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.