1

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

4

2 回答 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 回答