通过NSString将NSMutablearray排序为日期

我有一个数组,用字符串对象填充。 在每个对象内部是对象的名称和字符串,由“ – ”分隔,例如。 “Object1 – 26.05.2012”。 我想按字符串中的日期对数组进行排序,而不是名称,降序这可能吗?

正如@Vladimir指出的那样,将名称和字符串彼此分开并按日期排序会好得多。

 NSMutableArray *newArray = [[NSMutableArray alloc] init]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"dd.MM.yyyy"]; for (NSString *str in yourArray) { NSRange rangeForDash = [str rangeOfString:@"-"]; NSString *objectStr = [str substringToIndex:rangeForDash.location]; NSString *dateStr = [str substringFromIndex:rangeForDash.location+1]; NSDate *date = [formatter dateFromString:dateStr]; NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:objectStr, @"object", date, @"date", nil]; [newArray addObject:dic]; } NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO]; [newArray sortUsingDescriptors:[NSArray arrayWithObjects:sortDesc, nil]]; [sortDesc release]; [formatter release]; 

newArray将被排序,但将包含字典对象,每个对象包含2个字符串。

快速而肮脏的修复 – 重新排列字符串,以便日期是第一个

str = [[str substringFromIndex:someIndex] stringByAppendingString:[str substringToIndex:someIndex]];

然后只需在数组排序后将所有内容都切换回来。