Я использую CoreData и имею две части с общей абстрактной супер-сущностью, назовем их
SuperEntity,
FirstSubEntity and
SecondSubEntity
Все три объекта имеют собственный подкласс NSManagedObject
или SuperEntity
.
Я использую NSFetchRequest
для получения всех объектов типа SuperEntity
, то есть я получу набор всех FirstSubEntities
и SecondSubEntities
, перемешанных вместе. Я хочу отсортировать этот набор на основе класса сущности, например.
<FirstSubEntity id=X>
<FirstSubEntity id=X>
<FirstSubEntity id=X>
- ...
<SecondSubEntity id=X>
<SecondSubEntity id=X>
- ...
Я пытаюсь установить NSSortDescriptor
с помощью ключа class
:
[NSSortDescriptor sortDescriptorWithKey:@"class" ascending:YES]
К сожалению, это вызывает исключение
'NSInvalidArgumentException', reason: 'keypath class not found in entity <NSSQLEntity SuperEntity id=X>'
Любопытно, что если я вместо этого использую NSFetchedResultsController
, я могу установить для sectionName значение class
следующим образом
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext
sectionNameKeyPath:@"class"
acheName:nil];
Что отлично работает. Есть идеи, как с этим справиться с NSSortDescriptors
?