/ / NSMutableDictionary sortuj wartości w kluczach - ios, dictionary, nsdictionary, nsmutabledictionary

Wartości sortowania NSMutableDictionary w kluczach - ios, dictionary, nsdictionary, nsmutabledictionary

Mam NSMutableDictionary:

NSMutableDictionary = {
"03-19" = (
"Movie1",
"Movie2",
"Movie3"
);
"03-20" = (
"Movie1"
);
"03-21" = (
"Movie1",
"Movie2"
);
}

Obiekty filmowe mają wartość czasu. Potrzebuję posortować wartości dla każdego klawisza według Movie.timeString. Jak mam to zrobić?

Odpowiedzi:

1 dla odpowiedzi № 1

Pary klucza wartości nie są w określonej kolejności, gdy są przechowywane w NSDictionary lub NSMutableDictionary.

Możesz po prostu ponownie napisać kod przez iterację przez każdy klucz, a następnie sortuj, wartości (przechowywane jako obiekt NSArray / NSMutableArray, przypuszczam) iteracyjnie. Zakładając, że rzeczywiście jest NSMutableDictionary * dict

for(NSString *key in [dict allKeys])
{
NSArray *arrTimes = [dict objectForKey:key];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh:mm a"];

NSArray *arrSortedTimes = [arrTimes sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2)
{
NSDate *date1 = [dateFormatter dateFromString:obj1];
NSDate *date2 = [dateFormatter dateFromString:obj2];
return [date1 compare:date2];
}];

[dict setObject:arrSortedTimes forKey:key];
}

Możesz spróbować tego kawałka kodu i daj mi znać, jeśli masz jakiś problem.


0 dla odpowiedzi nr 2

Oto jedna opcja:

   NSMutableDictionary *myNewDic = [NSMutableDictionary dictionary];
for (NSString *key in [myDictionary allKeys]) {
[myNewDic setObject:[[myDictionary objectForKey:key] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)] forKey:key];
}

A twój myNewDic jest tym, czego potrzebujesz.


0 dla odpowiedzi № 3
NSDictionary *dictionary = @{@"1": @"some value 1",
@"5": @"some value 5",
@"2" : @"some value 2"};
NSArray *sortedKeys = [dictionary keysSortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2 options:0];
}];
NSDictionary *sorted = [NSDictionary dictionaryWithObjects:[dictionary objectsForKeys:sortedKeys notFoundMarker:@""] forKeys:sortedKeys];