Где поместить дескриптор NSSort при загрузке Tableview из NSArray с использованием reloadData в Objective- C - PullRequest
0 голосов
/ 10 марта 2020

Я загружаю табличное представление из NSArray в противоположность NSFetchedResultsController. Когда я хочу отсортировать или отфильтровать таблицу, используя NSFetchedResultsController, я просто помещаю logi c сортировки в метод делегата -NSFetchedResultsController.

Однако в данном случае я хочу отсортировать представление таблицы, отображающее массив используя reloadData. Я знаю, что reloadData вызывает метод cellForRowAtIndexPath. Это где я должен попытаться поставить логи c для сортировки?

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([self.sortType intValue==1) {
NSSortDescriptor *sd = [[NSSortDescriptor alloc] initWithKey:@"lastName" ascending:YES];
data = [data sortedArrayUsingDescriptors:@[sd]];
} 
//get cell
//assign object in data array to cell
}

Это правильный способ сортировки или есть лучший способ?

...