我有一个数组,里面填充了字符串对象。每个对象内部是对象的名称和字符串,用“ - ”分隔,例如。“对象 1 - 26.05.2012”。我想按字符串中的日期排序我的数组,而不是名称,降序这可能吗?
问问题
1776 次
2 回答
3
正如@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 个字符串。
于 2012-06-28T12:31:37.033 回答
0
快速而肮脏的修复 - 重新排列字符串,使日期排在第一位
str = [[str substringFromIndex:someIndex] stringByAppendingString:[str substringToIndex:someIndex]];
然后在数组排序后将所有内容切换回来。
于 2012-06-28T12:26:09.137 回答