2013-10-28 2 views
1

У меня есть NSTable, заполненный данными. Я отсортировал столбцы, используя следующий код. Проблема в том, что он сортирует столбец «Число» в алфавитном порядке, когда я хочу его численно.Сортировочные заголовки

(1,100,101,2,20,21,3,30,31................) 

У меня есть данные, введенные в виде чисел (@1, @2, @3), а не строки (@"1", @"2", @"3")

// THIS WILL SORT ALL COLUMNS // 

- (void)tableView:(NSTableView *)tableView mouseDownInHeaderOfTableColumn:(NSTableColumn  *)tableColumn 

{ 

NSTableColumn *NumberColumn = [tableView tableColumnWithIdentifier:@"No."]; 
NSSortDescriptor *NumberSortDescriptor = [NSSortDescriptor 
            sortDescriptorWithKey:@"No." 
            ascending:YES 
            selector:@selector(compare:)]; 
[NumberColumn setSortDescriptorPrototype:NumberSortDescriptor]; 

NSTableColumn *CardNameColumn = [tableView tableColumnWithIdentifier:@"Card Name"]; 
NSSortDescriptor *CardNameSortDescriptor = [NSSortDescriptor 
             sortDescriptorWithKey:@"Card Name" 
             ascending:YES 
             selector:@selector(compare:)]; 
[CardNameColumn setSortDescriptorPrototype:CardNameSortDescriptor]; 

NSTableColumn *TypeColumn = [tableView tableColumnWithIdentifier:@"Type"]; 
NSSortDescriptor *TypeSortDescriptor = [NSSortDescriptor 
            sortDescriptorWithKey:@"Type" 
            ascending:YES 
            selector:@selector(compare:)]; 
[TypeColumn setSortDescriptorPrototype:TypeSortDescriptor]; 

NSTableColumn *RarityColumn = [tableView tableColumnWithIdentifier:@"Rarity"]; 
NSSortDescriptor *RaritySortDescriptor = [NSSortDescriptor 
             sortDescriptorWithKey:@"Rarity" 
             ascending:YES 
             selector:@selector(compare:)]; 
[RarityColumn setSortDescriptorPrototype:RaritySortDescriptor]; 

NSTableColumn *UnlimitedColumn = [tableView tableColumnWithIdentifier:@"Unlimited"]; 
NSSortDescriptor *UnlimitedSortDescriptor = [NSSortDescriptor 
             sortDescriptorWithKey:@"Unlimited" 
             ascending:YES 
             selector:@selector(compare:)]; 
[UnlimitedColumn setSortDescriptorPrototype:UnlimitedSortDescriptor]; 

NSTableColumn *FirstEditionColumn = [tableView tableColumnWithIdentifier:@"1st Edition"]; 
NSSortDescriptor *FirstEditionSortDescriptor = [NSSortDescriptor 
             sortDescriptorWithKey:@"1st Edition" 
             ascending:YES 
             selector:@selector(compare:)]; 
[FirstEditionColumn setSortDescriptorPrototype:FirstEditionSortDescriptor]; 

} 

- (void)tableView:(NSTableView *)tableView sortDescriptorsDidChange:(NSArray 
                  *)oldDescriptors 
{ 
[BaseSet sortUsingDescriptors: [tableView sortDescriptors]]; 
[tableView reloadData]; 

} 

ответ

0

Я понял, что все мой код здесь было правильным. Проблема заключалась в том, что мое приложение сохраняло мой массив при завершении, и оно сохраняло его до того, как я превратил строки в числа.

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