0

У меня есть список данных, которые я могу сортировать, нажав на заголовок столбца. Единственная проблема заключается в том, что она показывает, как:Порядок сортировки в NSTableView

10A 
11A 
12A 
1A 
2A 
3A 

etc... 

Где в идеале, я хотел бы, чтобы быть отсортированы как:

1A 
2A 
3A 
4A 
5A 
6A 
7A 
8A 
9A 
10A 
11A 

etc... 

Есть ли способ обойти это по умолчанию сортировочного действия?

Это мои сортировки Дескрипторы свойства:

Sort Descriptors Properties

@Monolo:

enter image description here

self.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"self" 
                 ascending:YES 
                 comparator:^NSComparisonResult(id obj1, id obj2) { 
                  NSLog(@"COMPARATOR!"); 
                  return [obj1 compare:obj2 
                     options:NSNumericSearch]; 
                 }]]; 
+0

http://stackoverflow.com/questions/8242735/how-to-sort-array-controller-alphabetically-with-numbers-last-in-objective-c –

ответ

0

В общем, вид сортировки вы ищете может быть получена с помощью compare:options: метод NSString, поэтому, если вы создадите дескриптор сортировки в коде и получить их в контроллер массива (программно или путем привязки файла nib), вы должны получить то, что ищете.

Настройка массива сортировки дескриптора, например, так:

// AppDelegate.h: 

@property (strong) NSArray *sortDescriptors; 


//AppDelegate.m: 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    self.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"self" 
               ascending:YES 
               comparator:^NSComparisonResult(id obj1, id obj2) { 
                return [obj1 compare:obj2 
                   options:NSNumericSearch]; 
               }]]; 
} 

Таким образом, вместо привязки к стандартной Defaults пользователя контроллера, вы должны выполнить привязку к App делегата (или какой-либо другой объект, который вы предпочитаете удерживайте эти вспомогательные объекты), и вы получите поведение, которое вам нужно. Путь ключа модели для привязки - sortDescriptors с использованием фрагмента кода выше.

+0

Я изменяю дескрипторы сортировки для таблицы или контроллер массива? –

+0

В результате я использую этот код. Я редактировал исходное сообщение, чтобы включить sceenshot, –

+0

Я могу подтвердить, что инструкция NSLog не вызывается, но appdidfinishlaunching fucntion. Это код с NSLog in (добавляется к вопросу). –

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

  • Нет связанных вопросов^_^