Удалить дубликаты в NSdictionary - PullRequest
1 голос
/ 17 марта 2010

Есть ли способ удалить дублирующиеся пары (ключ-значение) из NSDictionary?

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

Ответы [ 3 ]

2 голосов
/ 17 марта 2010

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

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

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

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

1 голос
/ 17 марта 2010

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

0 голосов
/ 17 марта 2010

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

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

...