NSSortDescriptor sur l'atsortingbut transitoire pour NSFetchedResultsController

Ok, je voulais d'abord faire NSSortDescriptor d'une requête pour NSFetchedResultsController à sortinger en fonction de la propriété dans ma sous-class NSManagedObject , mais il ne le fera évidemment pas, car NSFetchedResultsController est limité aux prédicats et aux descripteurs de sorting qui fonctionnent sur l'entité récupérée et ses relations, j'ai donc décidé de créer un atsortingbut transitoire dans mon model de données, de synthétiser la propriété pour cet atsortingbut en ivar dans ma sous-class NSManagedObject , et de sortinger en fonction de celle-ci.

Lors de l'exécution, j'ai eu lors de l'exécution de l'extraction 'NSInvalidArgumentException', reason: 'keypath isActive not found in entity <NSSQLEntity SMSourceEntity id=2>'

Je sais que c'est un problème KVO, donc j'ai ajouté + (NSSet*)keyPathsForValuesAffectingIsActive , mais j'ai toujours le même problème.

Qu'est-ce que j'ai fait de mal, ou il me manque encore quelque chose pour le faire find mon keypath? Merci.

code:

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

mon sortDescriptor:

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

Ce n'est pas un problème KVO , c'est un problème avec ce que vous essayez de faire parce que la FRC exige que le sorting puisse être appliqué au magasin SQLite sous-jacent. En d'autres termes, vous ne pouvez filterr et sortinger que les attributes non transitoires. Vous devrez rendre l'atsortingbut non-transitoire afin que sa valeur soit enregistrée dans le magasin et disponible pour SQLite.

Pour le FRC, seul l'atsortingbut de path de key de nom de section peut être transitoire.