web-dev-qa-db-ja.com

NSMutableArray-重複を削除します

私はこれをやってみました:Values = [[NSSet setWithArray:Values] allObjects];そして成功なし、

ありがとう

23
user393273

NSArrayの代わりにNSMutableArrayを返すことを除いて、メソッドは機能するはずです。あなたが使うことができます

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

valuesを新しい配列のコンテンツに設定します。

44
kennytm

NSSetメソッドは、NSArrayにあるすべての注文を削除する可能性があることに注意してください。順序を維持するために、配列をループすることをお勧めします。このようなもの:

NSMutableArray* uniqueValues = [[NSMutableArray alloc] init]; 
for(id e in Values)
{
    if(![uniqueValues containsObject:e])
    {
        [uniqueValues addObject:e];
    }
}
23
Sander
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);
20
kapil

Key ValueCodingを使用できます。

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

完全に理解するには、以下の記事を参照してください

KVCコレクションパラメータ

1
Varun