È un problema di lunga data quando si utilizzano i dati principali per molte relazioni che è molto difficile ordinare una richiesta di recupero utilizzando NSSortDescriptor
su un'entità Parent
in base al numero il numero di children
è in una relazione uno-a-molti con un'entità Child
. Ciò è particolarmente utile in combinazione con uno NSFetchedResultsController
. In genere l'inizializzazione del descrittore tipo come:NSSortDescriptor per ordinare in base al numero di elementi in molte relazioni tra core Data
NSSortDescriptor *sortByNumberOfChildren = [[NSSortDescriptor alloc] initWithKey:@"[email protected]" ascending:NO];
risultati in un'eccezione 'Keypath containing KVC aggregate where there shouldn't be one; failed to handle [email protected]
Su iOS 6.1, ho scoperto una correzione aggiungendo la funzione di accesso KVO -countOf<Key>
come attributo al mio modello di oggetto gestito come un intero genere. Non ho implementato nulla per questo attributo nella mia sottoclasse NSManagedObject
, poiché tutta la magia sembra avvenire sotto il cofano. (vedi https://stackoverflow.com/a/15546371/2042527).
Tuttavia, questo non funziona su iOS 6.0. Qui ho trovato che l'aggiunta del seguente metodo per il vostro NSManagedObject
sottoclasse risolve il problema:
- (NSUInteger)countOfChildren{
return [self.children count];
}
aggiungendo sia non non risolvere il problema in entrambi SDK. Al contrario, rompe la correzione.
Qualcuno ha idea del perché questo sta accadendo e perché c'è una differenza tra entrambi, anche se non si fa menzione delle modifiche a Core Data o Foundation tra iOS 6.0 e iOS 6.1.
Hai aggiunto questo a "NSManagedObjectModel'? È difficile vedere come questo possa anche essere compilato, per non parlare del lavoro. 'NSManagedObjectModel' non ha alcuna relazione con altre classi. –
Mi dispiace, mio male, intendevo anche la sottoclasse 'NSManagedObject' anche la seconda volta. Ho corretto l'errore. –
Non una soluzione al tuo problema esatto ma un'altra vista su di esso: che ne dici di andare a prendere i bambini e contare il numero di genitori distinti? Forse questo [post] (http://stackoverflow.com/questions/9157436/distinct-count-via-core-data-nsexpression-into-nsfetchedresultscontroller) ti aiuta. – Paul