Ok, ja początkowo chciał, aby NSSortDescriptor
wniosku o NSFetchedResultsController
sortowania w oparciu o właściwości w moim NSManagedObject
podklasy, ale to oczywiście nie zrobi, bo NSFetchedResultsController jest ograniczona do orzeczników i sortowania deskryptory działające na pobranej jednostce i jej relacje, dlatego postanowiłem utworzyć atrybut przejściowy w moim modelu danych, przetworzyć właściwość tego atrybutu na Ivar w mojej podklasie NSManagedObject
i na tej podstawie sortować.NSSortDescriptor na przejściową atrybutu dla NSFetchedResultsController
Po uruchomieniu go, mam podczas wykonywania sprowadzić 'NSInvalidArgumentException', reason: 'keypath isActive not found in entity <NSSQLEntity SMSourceEntity id=2>'
wiem, że to KVO problem, więc dodałem + (NSSet*)keyPathsForValuesAffectingIsActive
, ale nadal mają ten sam problem.
Co zrobiłem źle, lub nadal brakuje mi czegoś, co sprawiło, że znalazłem mój keypath? Dzięki.
Kod:
@implementation SMSourceEntity
@dynamic friendlyName;
@dynamic interfaceAddress;
@dynamic uniqueID;
@dynamic network;
@synthesize isActive = _isActive;
+ (NSSet*)keyPathsForValuesAffectingIsActive
{
return [NSSet setWithObject:@"isActive"];
}
@end
mój sortDescriptor:
request.sortDescriptors = [NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"isActive" ascending:NO] , nil];
Dzięki, więc jeśli kiedykolwiek chciałbym, aby właściwości przejściowe działały z moim FRC, musiałbym je podklasować, pobrać otrzymane wyniki, a następnie posortować tablicę pobranego obiektu na podstawie mojej właściwości w didChangeContent :? Czy jest sens? – ambientlight
Myślę, że byłoby to bardzo trudne, ponieważ musiałbyś napisać dużo kodu lub wyrzucić większość korzyści z używania FRC (jak paginowane ładowanie na żądanie). Powinieneś prawdopodobnie rozważyć inne opcje na podstawie każdego przypadku. Podobnie jak przy użyciu wielu FRC dla różnych sekcji lub czegoś podobnego. – Wain
Idealnie ma sens, dzięki. – ambientlight