У меня есть таблица с двумя столбцами: дата и имя. Я использую этот код для сортировки элементов:Сортировка таблицы date Objective-C
-(id)tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)aTableColumn
row:(NSInteger)rowIndex {
NSDictionary *itemDictionary = [itemListArray objectAtIndex:rowIndex];
if (aTableColumn == itemName)
return [itemDictionary valueForKey:@"ItemNameBrowser"];
else if (aTableColumn == dateCare)
{
NSDate *date_to_set;
if ([[itemDictionary valueForKey:@"ItemdateCare"] isKindOfClass:[NSString class]])
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setLocale:[NSLocale currentLocale]];
date_to_set = [dateFormatter dateFromString:[itemDictionary valueForKey:@"ItemdateCare"]];
}
else
{
date_to_set = [itemDictionary valueForKey:@"ItemdateCare"];
}
return date_to_set;
}
else
return nil;
}
//sorting table view
-(void)tableView:(NSTableView *)tableView sortDescriptorsDidChange: (NSArray *)oldDescriptors
{
[itemListArray sortUsingDescriptors: [tableView sortDescriptors]];
[tableView reloadData];
}
-(void)addItem {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setLocale:[NSLocale currentLocale]];
//Valori da aggiungere
NSString *newItemNameBrowser = @"Item";
NSString *newItemDateCare = [NSDate date];
NSMutableDictionary *newItem = [NSMutableDictionary dictionary];
[newItem setValue:newItemNameBrowser forKey:@"ItemNameBrowser"];
[newItem setValue:newItemDateCare forKey:@"ItemdateCare"];
[itemListArray addObject:newItem];
[tableList reloadData];
[dateFormatter release];
}
В колонках MainMenu.xib являются:
Sort Key ItemName
Selector compare:
и
Sort Key ItemDate
Selector compare:
Колонны нормально. Проблема заключается в сортировке столбцов даты, потому что вы неправильно изменяете дату. Элементы считаются только номерами.
Спасибо за помощь!
Я добавил свой код. Я использую это: NSDate * newItemDate = [NSDate date]; для добавления элемента – Joannes
Как я уже сказал, сохраните даты как 'NSDates', а не строки. Только конвертируйте их в строки в точке, где они должны отображаться, и это можно сделать автоматически с помощью «NSDateFormatter» в ячейке текстового поля. – JeremyP
Я обновил свой код, теперь он работает, но не использует NSDateFormatterShortStyle. Мне нужна дата с DD/MM/YYYY HH.MM.SS. Я не понимаю, где ошибочно. Вы можете мне помочь? Спасибо большое. – Joannes