2013-05-15 1 views
0

У меня есть NSMutableDictionary, в котором указаны контактные данные (NSString) и даты (NSDate). Имена: keys. Как отсортировать имена по дате?Как отсортировать «ключ» и «значение» в NSMutableDictionary от NSDate?

Предполагаю, что мне нужно создать NSMutableArray дат, а затем отсортировать его как-то. Но как я могу получить имена для дат? Как мне сортировать NSDate?

Спасибо!

+0

Может быть, это может помочь: http://stackoverflow.com/a/7628808/1758762 – duDE

+1

Вы не можете отсортировать NSDictionary. Вы должны скопировать содержимое в NSArray или некоторые из них, чтобы отсортировать их. –

+0

[ключи NSDictionary, отсортированные по численному значению] (http://stackoverflow.com/questions/1620001/nsdictionary-keys-sorted-by-value-numerically) предоставят решение. –

ответ

0

Вы можете использовать [myDictionary keysSortedByValueUsingSelector:@selector(compare:)];

4

Попробуйте следующий код, если ДИКТ содержит NSString в формате даты:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"your date format"]; 

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

В sortedKeys содержит отсортированные имена.

Если словарь содержит фактические объекты NSDate затем:

NSArray *sortedKeys = [yourDictionary keysSortedByValueUsingComparator:^NSComparisonResult(NSDate *obj1, NSDate *obj2) 
{ 
    return [obj1 compare:obj2]; 
}]; 
+0

Работа второй секции кода! Бесконечно благодарен! –

+0

Если вы нашли ответ, отметьте его как принято;) – danypata

+0

Aaa, прекрасное голосование без комментариев, объясняющее причину понижения голосов. – danypata