2012-06-11 2 views
0

У меня есть таблица с двумя столбцами: дата и имя. Я использую этот код для сортировки элементов:Сортировка таблицы 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: 

Колонны нормально. Проблема заключается в сортировке столбцов даты, потому что вы неправильно изменяете дату. Элементы считаются только номерами.

enter image description here

Спасибо за помощь!

ответ

0

Я предполагаю, что вы сохраняете даты в своем itemListArray в виде строки. Не. Сохраните их как NSDates, затем они будут отображаться правильно отсортированными.

Вам нужно будет привязать NSDateFormatter к ячейке текстового поля NSTableColumn, чтобы преобразовать их в строку для просмотра.

+0

Я добавил свой код. Я использую это: NSDate * newItemDate = [NSDate date]; для добавления элемента – Joannes

+2

Как я уже сказал, сохраните даты как 'NSDates', а не строки. Только конвертируйте их в строки в точке, где они должны отображаться, и это можно сделать автоматически с помощью «NSDateFormatter» в ячейке текстового поля. – JeremyP

+0

Я обновил свой код, теперь он работает, но не использует NSDateFormatterShortStyle. Мне нужна дата с DD/MM/YYYY HH.MM.SS. Я не понимаю, где ошибочно. Вы можете мне помочь? Спасибо большое. – Joannes

Смежные вопросы