Сортировать один словарь с другим iPhone - PullRequest
0 голосов
/ 14 марта 2012

У меня есть два объекта NSMutableDictionary.Dict 1 имеет меньше ключей, чем dict 2, но ключи, используемые в обоих словарях, идентичны по синтаксису.Я хотел бы повторно отсортировать dict 1 по значениям для этих ключей в dict 2. Значения в Dict 2 являются целыми числами.

Может кто-нибудь начать меня?

ПРАВКА:один массив ключей и словарь с ключами и числовыми значениями.В словаре больше ключей и значений, чем в массиве ключей / объектов.Я хотел бы переупорядочить массив по соответствующим значениям этих ключей из словаря.

Извините за повтор по этому вопросу, но это более точно.

Ответы [ 2 ]

0 голосов
/ 14 марта 2012

Вы ищете вызов метода sortedArrayUsingComparator :? Это займет один массив и вернет вам массив с отсортированными элементами.

Вот пример кода, который сортирует словари по значению в поле «порядок сортировки». Вам следует прочитать документацию по этим звонкам:

    NSComparisonResult (^sortBlock)(id, id) = ^(id obj1, id obj2) {

    if ([[obj1 objectForKey:@"sortorder"] intValue] > [[obj2 objectForKey:@"sortorder"] intValue]) { 
        return (NSComparisonResult)NSOrderedDescending;
    }
    if ([[obj1 objectForKey:@"sortorder"] intValue] < [[obj2 objectForKey:@"sortorder"] intValue]) {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
};

+ (NSArray *) returnSortedArrayByAlpha:(NSArray*) inputArray whichField:(NSString*) whichField {

    NSArray * sortedArray = [inputArray sortedArrayUsingComparator:sortBlock];
    return  sortedArray;
}
0 голосов
/ 14 марта 2012

У вас может быть фундаментальное недоразумение здесь. Объекты NSDictionary и NSSet всегда не отсортированы.

Сортируются только объекты NSArray и NSOrderedSet.

Что вы, вероятно, захотите сделать, - это создать третий объект, NSArray и заполнить его любыми клавишами, которые вы хотите.

Тогда, если вы перебираете NSArray, вы можете получить доступ к объекту словаря в порядке отсортированного массива.

...