2012-06-11 98 views
0

我有一個包含兩列的表:Date和Name。 我使用此代碼排序元素:排序表日期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