【发布时间】:2014-01-08 22:38:36
【问题描述】:
我正在使用 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>- ...
我正在尝试使用键 class 设置 NSSortDescriptor:
[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 管理此问题的任何想法?
【问题讨论】:
标签: ios core-data nsfetchrequest nssortdescriptor