Ich habe gekämpft, um eine einfache Möglichkeit zu finden, ein NSMutableArray zu sortieren, das NSDictionaries enthält. Jedes NSDictionary hat einen Schlüssel namens "Date", der einen NSString eines Datums enthält (Beispiel: 15.10.2014).NSArray von NSDictionaries nach String-Datum in Schlüssel sortieren?
Was ich suche, ist das Array auf diese Strings in aufsteigender Reihenfolge sortieren.
Ich habe das Glück, ohne versucht:
NSComparisonResult dateSort(NSString *s1, NSString *s2, void *context) {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM/dd/yy"];
NSDate *d1 = [formatter dateFromString:s1];
NSDate *d2 = [formatter dateFromString:s2];
return [d1 compare:d2]; // ascending order
return [d2 compare:d1]; // descending order
}
Ich habe dies auch versucht ohne Glück:
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"interest" ascending:YES];
stories=[stories sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
recent = [stories copy];
Jeder Weg führt zu einem Absturz und ich denke, es ist, weil es sich um eine NSString anstelle von NSDate, aber ich weiß nicht, wie ich das machen soll.
Kann mir jemand den richtigen Weg zeigen, dies zu erreichen? Diese
ist, wie ich den ersten Codeblock rufen:
theDictionaries = [[theDictionaries sortedArrayUsingFunction:dateSort context:nil] mutableCopy];
In welcher Zeile stürzt es ab, und was ist die Fehlermeldung? – rdelmar
Mit dem ersten Code-Block stürzt es auf NSDate ab * d1 = [formatter dateFromString: s1]; mit folgendem Absturz: NSDictionaryI length]: unerkannter Selektor, der an Instanz gesendet wurde – user3251233
Klingt so, als würden Sie ein Wörterbuch an einen Zeichenfolgenparameter (s1) übergeben. Zeigen Sie den Code für die gesamte Methode an. Woher kommen s1 und s2? – rdelmar