2017-12-29 44 views
0

Ich habe ein Wörterbuch des Formats [Int: Any] Ich habe eine Reihe von Schlüsselwertpaare drin. Ich möchte das Wörterbuch sortieren, das Millisekunden-ZeitformatWie NSDictionary mit Millisekunde (Zeitformat) zu sortieren?

[169887: ["noti_type": 0, "project_name": "Design Project", "eventCount": 6, "author_pic": " /file/download/profile$2348d4f21095a01cc16a8ad9bf08f966.jpg", "canvas_name": "Design Reference #31 : Windows in NYC", "lastUpdatedAt": 1513585053629, "author_name": "Jake Kyung "], 


173865: ["noti_type": 0, "project_name": "BeeCanvas DEV", "eventCount": 13, "author_pic": " &&&& /file/download/profile$80bbc9731a859d4e083df0df8044bcde.jpg &&&& /file/download/profile$2348d4f21095a01cc16a8ad9bf08f966.jpg", "canvas_name": "Android Release note", "lastUpdatedAt": 1513307315308, "author_name": " &&&& Sukho Bu &&&& Jake Kyung "] 

Ich habe eine Reihe von dieser Art von Werten in meinem Wörterbuch. Ich möchte sie mit dem lastUpdatedAt-Wert sortieren, der 1513585053629 Millisekundenformat ist.

Ich habe durch einige Beiträge gegangen, die sagte, dies möglich ist, wenn ich einen NSDate verwenden können,

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey: @"dateOfInfo" ascending: NO]; 
NSArray *sortedArray = [array sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 

[SortDescriptor release];

Aber ich habe mich nur gefragt, ob ich dies direkt im Millisekundenformat erreichen könnte, anstatt in NSDate zu konvertieren?

+0

Das Datum in Millisekunden ist eine ** Zahl **. Sie können das Wörterbuch entsprechend leicht sortieren. – the4kman

+0

Wie kann ich dieses bestimmte Schlüsselwertpaar angeben, um mein gesamtes Wörterbuch abhängig von den Werten dieses bestimmten Schlüsselwertpaares zu sortieren? –

+0

Ein Wörterbuch ist per Definition ungeordnet. Du kannst es nicht sortieren. – vadian

Antwort

1

Diese Demo nur für das Verständnis ..

NSMutableDictionary *dict1 = [[NSMutableDictionary alloc]init]; 
    [dict1 setObject:@"Design Project" forKey:@"project_name"]; 
    [dict1 setObject:@"1513585053629" forKey:@"lastUpdatedAt"]; 

    NSMutableDictionary *dict2 = [[NSMutableDictionary alloc]init]; 
    [dict2 setObject:@"BeeCanvas DEV" forKey:@"project_name"]; 
    [dict2 setObject:@"1513307315308" forKey:@"lastUpdatedAt"]; 

    NSMutableArray *arr = [[NSMutableArray alloc]init]; 
    [arr addObject:dict1]; 
    [arr addObject:dict2]; 
    NSLog(@"original array = %@",arr); 

Sie können in Art Descriptor direkt Schlüsselnamen geben.

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey: @"lastUpdatedAt" ascending:YES]; 
    NSArray *sortedArray = [arr sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
    NSLog(@"sorted array = %@",sortedArray); 

Ausgang: -

sorted array = (
     { 
     lastUpdatedAt = 1513307315308; 
     "project_name" = "BeeCanvas DEV"; 
    }, 
     { 
     lastUpdatedAt = 1513585053629; 
     "project_name" = "Design Project"; 
    } 
) 
+0

@SritejaC wenn Sie anders als oben nicht ausgeben dann sagen Sie –

+1

Danke für die Eingabe, tatsächlich habe ich viel gedacht und mein Modell geändert, so dass jetzt zuletzt aktualisiert ist mein Schlüssel und Sortieren von Schlüsseln ist sehr einfach. 'lass sortedKeysDict = NotificationModel.unreadDict.sorted {$ 0.key> $ 1.key}' –

Verwandte Themen