как отсортировать табличное представление на основе представления

Мне не удается отсортировать табличное представление на основе представления. Я использую arrayController, который управляет сущностью основных данных.

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

Как это исправить?
Мне кажется, что я что-то упускаю, но не могу с этим справиться.


person Luca Corletto    schedule 02.03.2013    source источник


Ответы (1)


Вы можете рассмотреть возможность использования файла NSFetchedResultsController. Из документации Apple для NSFetchedResultsController,

Вы используете контроллер извлеченных результатов для эффективного управления результатами, возвращенными из запроса на выборку основных данных, чтобы предоставить данные для объекта UITableView.

Код выглядит следующим образом: строка с дескриптором сортировки начинается с NSSortDescriptor.

- (NSFetchedResultsController *)fetchedResultsController
{
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"YourEntityName"
                                              inManagedObjectContext:yourManagedObjectContext];
    [fetchRequest setEntity:entity];

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"YourSortKey"
                                                                   ascending:YES];

    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [fetchRequest setSortDescriptors:sortDescriptors];

    NSError *error = nil;
    NSArray *fetchedObjects = [yourManagedObjectContext executeFetchRequest:fetchRequest 
                                                                      error:&error];
    if (fetchedObjects == nil) {
        // Handle the error
    }

    yourFetchedResultsController = [[NSFetchedResultsController alloc] 
            initWithFetchRequest:fetchRequest 
            managedObjectContext:self.managedObjectContext
              sectionNameKeyPath:nil
                       cacheName:nil];

    return yourFetchedResultsController;
}
person Daniel Zhang    schedule 02.03.2013