Ok, inizialmente ho voluto fare NSSortDescriptor
di una richiesta di NSFetchedResultsController
per ordinare in base alla proprietà nel mio NSManagedObject
sottoclasse, ma ovviamente non lo farà, perché NSFetchedResultsController è limitato a predicati e ordinamento descrittori che funzionano sull'entità recuperata e le sue relazioni, così ho deciso di creare un attributo transitorio nel mio modello di dati, sintetizzare la proprietà per questo attributo su ivar nella mia sottoclasse NSManagedObject
e ordinare in base ad essa.NSSortDescriptor su attributo transitoria per NSFetchedResultsController
Durante l'esecuzione di esso, ho avuto durante l'esecuzione di prelevo 'NSInvalidArgumentException', reason: 'keypath isActive not found in entity <NSSQLEntity SMSourceEntity id=2>'
So che questo è un problema KVO, così ho aggiunto + (NSSet*)keyPathsForValuesAffectingIsActive
, ma hanno ancora lo stesso problema.
Cosa ho fatto di sbagliato o mi manca ancora qualcosa per trovare il mio keypath? Grazie.
codice:
@implementation SMSourceEntity
@dynamic friendlyName;
@dynamic interfaceAddress;
@dynamic uniqueID;
@dynamic network;
@synthesize isActive = _isActive;
+ (NSSet*)keyPathsForValuesAffectingIsActive
{
return [NSSet setWithObject:@"isActive"];
}
@end
mia sortDescriptor:
request.sortDescriptors = [NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"isActive" ascending:NO] , nil];
Grazie, quindi Se mai vorrei che le proprietà transitori funzionassero con il mio FRC, dovrei creare una sottoclasse, ottenere risultati recuperati, quindi ordinare l'array di oggetti recuperati in base alla mia proprietà in didChangeContent :? Ha senso? – ambientlight
Penso che sarebbe molto difficile da fare, perché dovresti scrivere molto codice o buttare via la maggior parte dei benefici dell'uso di un FRC (come il caricamento su richiesta impaginato). Probabilmente dovresti considerare altre opzioni caso per caso. Come usare più FRC per sezioni diverse o qualcosa del genere. – Wain
Ha perfettamente senso, grazie. – ambientlight