NSFetchedResultsController的transient属性的NSSortDescriptor

好吧,我最初想让NSSortDescriptor根据NSManagedObject子类中的属性对NSSortDescriptor进行sorting,但显然不会这样做,因为NSFetchedResultsController仅限于在取出的实体上工作的谓词和sorting描述符关系,所以我决定在我的数据模型中创build一个transient属性,将这个属性的属性合成到我的NSManagedObject子类中,然后根据它进行sorting。

运行时,我得到了执行获取'NSInvalidArgumentException', reason: 'keypath isActive not found in entity <NSSQLEntity SMSourceEntity id=2>'

我知道这是KVO问题,所以我添加了+ (NSSet*)keyPathsForValuesAffectingIsActive ,但仍然有同样的问题。

我做错了什么,或者我仍然错过了一些东西,使其find我的keypath? 谢谢。

码:

 @implementation SMSourceEntity @dynamic friendlyName; @dynamic interfaceAddress; @dynamic uniqueID; @dynamic network; @synthesize isActive = _isActive; + (NSSet*)keyPathsForValuesAffectingIsActive { return [NSSet setWithObject:@"isActive"]; } @end 

我的sortDescriptor:

 request.sortDescriptors = [NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"isActive" ascending:NO] , nil]; 

这不是一个KVO问题,这是你要做什么的问题,因为FRC要求sorting可以应用到底层的SQLite存储。 换句话说,你只能过滤和sorting非瞬态属性。 您将需要使属性非瞬态,以便将值保存到存储中,并可供SQLite使用。

对于FRC,只有部分名称关键path属性可以是暂时的。