2010-03-17 2 views
1

Есть ли способ удалить двойные пары с ключом из NSDictionary?Удалить дубликаты в NSdictionary

EDIT: Мое описание было неправильным, у меня есть дубликаты пар, например.
ключ1-значение1
ключ1-значение1
ключ2-значение2
ключ1-значение1
и т.д ..

+2

, как вы можете иметь дубликаты в словаре? согласно документации Apple, дубликаты автоматически удаляются при добавлении другого ключа с тем же именем: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/Reference/Reference. HTML – johnbakers

ответ

2

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

// dict - оригинальный словарь, новыйDict новый словарь с дубликатами.

NSMutableDictionary * newDict = [NSMutableDictionary dictionaryWithCapacity:[dict count]]; 
for(id item in [dict allValues]){ 
    NSArray * keys = [dict allKeysForObject:item]; 
    [newDict setObject:item forKey:[keys objectAtIndex:0]]; 
} 

ЮО может также использовать lastObject вместо objectAtIndex: 0, чтобы оставить другой ключ для Dup объектов

1

Одним из способов является положить пары ключ/значение в словаре по значению/ключ, а затем преобразовать, что назад к ключу/значению.

0

Я не могу придумать встроенный метод.

Если вы перебираете значения, allKeysForObject: даст вам массив ключей для каждого значения, и если у вас есть более одного ключа, это значение имеет дубликаты.

Смежные вопросы