Я использую NSFetchedResultsController
(NSFRC) для отображения информации в UITableView
. Я пытаюсь создать для пользователя возможность сортировать ячейки в разделах, а не в алфавитном порядке. Проблема в том, что секция будет определяться с помощью загруженной информации. Кроме того, раздел для каждого элемента будет меняться относительно часто, поэтому я не хочу сохранять этот раздел. Я заметил упоминание о переходных атрибутах в своих исследованиях аналогичных проблем, но я никогда не использовал их, прежде чем я не уверен, могу ли я использовать их, имея в виду, что все вычисления выполняются после того, как данные уже загружены, и я также хочу, чтобы это решение было совместимо с предыдущим Core Data database
. Также я не особенно хорош в Core Data
, (и Objective-C
при этом!), Поэтому я не совсем уверен, как бы я это сделал.
Итак, вот что я хочу использовать, если мы используем переходные атрибуты (этот следующий бит теоретический, поскольку я не знаю, являются ли переходные атрибуты правильными способами продвижения вперед). Мне хотелось бы 4 возможных раздела, 0-3 (я переименую их с помощью TableView delegate
, чтобы обойти проблемы сортировки). Когда вычисления будут выполнены, каждой ячейке будет назначен переходный атрибут (при необходимости раздел по умолчанию будет равен 2). Я надеюсь, что все это имеет смысл.
Верно, теперь для некоторого теоретического кода. Сначала я создаю свойство переходного процесса в окне модели данных и делаю его переходным процессом, установив флажок переходного процесса... Звучит достаточно просто.
В коде для вычислений в willDisplayCell
(это необходимо сделать в wDC по нескольким причинам), объект можно сохранить следующим образом:
MyEntity *myEntity = [self.fetchedResultsController objectAtIndexPath:indexPath];
myEntity.sectionTransientProperty = 2;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Error: %@", error);
FATAL_CORE_DATA_ERROR(error);
return;
}
Готово, да? Это то, как мы присваиваем значение переходному свойству?
Затем я изменяю параметр сортировки в NSFRC, когда я его выделяю:
fetchedResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"sectionTransientProperty"
cacheName:@"MyEntity"];
Как мы это делаем, что еще мне нужно делать? Или у меня это так ужасно неправильно, я должен просто отказаться от Core Data and NSFRC?
Если бы вы, ребята, могли помочь мне в этом, я бы очень признателен. Если вам нужно, чтобы я опубликовал больше кода, я был бы рад.
С уважением,
Mike