To długotrwały problem podczas używania danych podstawowych dla wielu relacji, że bardzo trudno jest posortować żądanie pobierania przy użyciu NSSortDescriptor
w jednostce Parent
na podstawie liczba children
występuje w relacji jeden-do-wielu z jednostką Child
. Jest to szczególnie przydatne w połączeniu z NSFetchedResultsController
. Zazwyczaj inicjowanie deskryptor sortowania jako:NSSortDescriptor do sortowania według liczby pozycji w danych podstawowych Wiele zależności
NSSortDescriptor *sortByNumberOfChildren = [[NSSortDescriptor alloc] initWithKey:@"[email protected]" ascending:NO];
powoduje wyjątek 'Keypath containing KVC aggregate where there shouldn't be one; failed to handle [email protected]
Na iOS 6.1, odkryłem poprawkę poprzez dodanie akcesor KVO -countOf<Key>
jako atrybut do mojego zarządzanego modelu obiektowego jako liczba całkowita rodzaj. NIE zaimplementowałem niczego dla tego atrybutu w mojej podklasie NSManagedObject
, ponieważ cała magia zdaje się dziać pod maską. (patrz https://stackoverflow.com/a/15546371/2042527).
Nie działa to jednak pod adresem iOS 6.0. Tu okazało się, że dodanie następującej metody do NSManagedObject
podklasy rozwiązuje problem:
- (NSUInteger)countOfChildren{
return [self.children count];
}
Dodanie zarówno robi nie rozwiązać problem w obu SDK. Przeciwnie, łamie to naprawę.
Czy ktoś ma pojęcie, dlaczego tak się dzieje i dlaczego istnieje różnica między nimi, mimo że nie ma wzmianki o zmianach w danych podstawowych lub fundacji między systemem iOS 6.0 a systemem iOS 6.1.
Dodałeś to do 'NSManagedObjectModel'? Trudno zobaczyć, w jaki sposób można to skompilować, nie mówiąc już o pracy. 'NSManagedObjectModel' nie ma żadnych relacji z innymi klasami. –
Przykro mi, mój zły, miałem na myśli podklasę NSManagedObject' również za drugim razem. Poprawiłem błąd. –
Nie jest to rozwiązanie konkretnego problemu, ale inny pogląd na to: Co powiesz na pobieranie dzieci i liczenie liczby różnych rodziców? Może to [post] (http://stackoverflow.com/questions/9157436/distinct-count-via-core-data-nsexpression-int-nsfetchedresultscontroller) pomaga. – Paul