2012-12-06 9 views
6

Przechowuję dane w NSMutableDictionary Aby przechowywać dane odebrane przez usługę internetową.Sortuj NSDictionary Według właściwości obiektu przechowywanego jako wartość

Chcę wyświetlać dane w kolejności alfabetycznej, ale jak wiemy, przechowujemy dane sklepu na swój sposób, więc otrzymuję inną kolejność dla iOS 5 i iOS 6. iOS 5 jest w porządku, ale w iOS 6 zmienia się kolejność.

Przechowuję klucz int i obiekt jako wartość.

obiekt zawiera ID, nazwę i opis.

EX: 
    key value 
    1 - (12,bhgjksd,kijdh) 
    6 - (13,kjfd,ikjk) 
    2 - (14,ljiuhbdf,dsjhfj) 

Jak mogę posortować moją właściwość Dictionary według Object.Name. lub uzyskaj klucz w oparciu o kolejność sortowania Object.Name.

Nie chcę sortować na klucz, który chcę posortować na Object.Name, która jest przechowywana w wartości część jako obiekt.

Wszelkiego rodzaju pomoc jest mile widziane ..... góry dzięki ..

+0

Można spojrzeć na to http://stackoverflow.com/questions/8118932/how-can-i-sort-nsmutabledictionary-with-keys- wartość –

+1

cześć Amrit dzięki, że mam czas. Ale w tym pytaniu chce sortować według klucza, a ja chcę sortować w oparciu o wartość. – CRDave

Odpowiedz

6

Spróbuj tego,

NSArray *sortedKeys = [dict keysSortedByValueUsingComparator: ^(id obj1, id obj2) { 

    return (NSComparisonResult)[obj1.name compare:obj2.name];; 
}]; 

Dostaniesz wszystkie klucze w sortedKeys tablicy, posortowane w kolejności Właściwość object.name. Możesz użyć tych klawiszy, aby uzyskać wartości ze słownika jako [dict valueForKey:[sortedKeys objectAtIndex:i]]. Aby uzyskać więcej informacji, proszę check apple documentation.

+0

dzięki To rozwiązało mój problem. Podoba mi się z keysSortedByValueUsingComparator. Najpierw znalazłem go stąd http://stackoverflow.com/questions/11217421/sort-nsdictionary-keys-by-dictionary-value-into-an-nsarray?rq=1. Dzięki spróbuj mi pomóc. – CRDave

+0

Pomaga mi to również w kampaniach NSString http://getsetgames.com/2009/12/10/iphonedev-advent-tip-10-string-comparison-using-nsstring/ – CRDave

+0

Nie wiedziałem, że mogę zaakceptować tylko jedną odpowiedź Więc idę po wybrać inną odpowiedź. – CRDave

3
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"Object.Name" ascending:YES]; 
[items sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]]; 

Również

NSArray *ordered = [myDictionary keysSortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2){ 
    return [obj1.name compare:obj2.name]; 
}]; 
+0

Dzięki spróbuj mi pomóc. Rozwiązałem mój problem przez keysSortedByValueUsingComparator – CRDave

+1

Pomaga mi to również w kampaniach NSString http://getsetgames.com/2009/12/10/iphonedev-advent-tip-10-string-comparison-using-nsstring/ – CRDave

+0

Nie skopiowałem z ty, właśnie wysłałem odpowiedź na 2 sposoby. I do OP, jaki chce. Nawet istnieją pewne różnice w twojej i mojej odpowiedzi. Nie obchodzi mnie, czy ktoś akceptuje moją odpowiedź, czy nie. Nawet przygnębienie będzie dla mnie w porządku;) –

Powiązane problemy