2009-10-05 13 views
8

Mam dwa rodzaje zastrzeżeń: lokalizacje i elementy historii. Próbuję pobrać lokalizacje dołączone do dowolnego elementu historii, więc moim predykatem pobierania dla lokalizacji jest "history. @ Count> 0", co działa poprawnie.NSSortDescriptor i wiele związków

Chciałbym również posortować obiekty lokalizacji za pomocą NSSortDescriptor według daty ich ostatniego elementu historii, który na tyle, na ile mogę to wyobrazić, byłby "history. @ Max.time", to jednak powoduje: błąd:

 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
    reason: 'Keypath containing KVC aggregate where there shouldn't be one; 
    failed to handle [email protected]' 

Plox Halp?

+0

Czy 'location.history' jest tablicą/zestawem? (Wydaje się być jednym, ale masz formę w liczbie pojedynczej.) –

+0

Jest to relacja wiele do wielu, co implikowałoby. forma pojedyncza jest dla mnie zła, ale nie chcę z nią teraz zadzierać, aby uniknąć zerwania czegokolwiek. –

+2

Joonas, wymyśliłeś to? Jestem w DOKŁADNIE tej samej sytuacji i otrzymuję ten sam błąd. Dzięki – kdbdallas

Odpowiedz

0

Oto kod, który mam gdzie zrobić podobny

NSError *error; 

if (![[self fetchedResultsController] performFetch:&error]) 
{ 
    UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Error" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease]; 
    [alert show]; 
} 
else 
{ 
    self.feedsArray = [fetchedResultsController fetchedObjects]; 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"[email protected]" ascending:NO]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 

    self.feedsArray = [feedsArray sortedArrayUsingDescriptors:sortDescriptors]; 

    [sortDescriptors release]; 
    [sortDescriptor release]; 

    NSInteger overviewAmount = [[feedsArray valueForKeyPath:@"@sum.unreadArticles"] integerValue]; 

    .... 
} 
+0

Jakiś pomysł, który mógł to naprawić? Naprawdę nic nie widzę w tym kodzie, który mógł być naprawą ... –

+0

Nie jestem pewien dokładnie ... Czy twoja Podświadomość jest sublimowana? Oba są moje (więc w przykładzie powyżej podmiot, który robię pobranie, a artykuł jest podklasowany) Nie mam nic specjalnego w podklasie dla artykułów, więc tak naprawdę nie pamiętam, dlaczego ją podklasowałem, więc może to właśnie dlatego ... Inna myśl jest w moich artykułach Entity atrybut postDate, który robię @max na Mam ustawienia w modalu do indeksowania. Być może spróbuj tego. Upewnij się także, że wartość daty ma wartość domyślną.Używam: 1980-01-01 00:00:01 – kdbdallas

4

AFAIK, należy użyć tylko collection operators, opisaną w Key-Value Coding Programming Guide, dla kluczowych ścieżek swoich deskryptory sortowania z collections (NSArray, NSSet, NSDictionary).

Nie można używać operatorów kolekcji dla ścieżek kluczy deskryptorów sortowania z żądaniami pobierania (NSFetchRequest).

@kdbdallas poprawnie używa operatora kolekcji do sortowania NSArray. Nie używa go do określenia deskryptora sortowania żądania pobierania.

Byłoby jednak słodkie, gdyby operatorzy kolekcji pracowali nad określeniem głównych ścieżek sortowania żądań pobierania. Prześlij tę prośbę o funkcję pod numerem http://bugreport.apple.com/. Im więcej jest zgłoszony, tym bardziej prawdopodobne, że go wesprą.

+0

Złożyłem ten numer z Apple: ID: 9758650, Tytuł: Operatorzy kolekcji powinni pracować z Core Data, Produkt: iPhone SDK, Klasyfikacja: Enhancement, Data początkowa: 12-Jul -2011 12:26, ​​Stan: Otwarte – ma11hew28

+0

Przesłałem rdar: // 10468062 z tym samym tytułem i przykładem z Departamentami i Pracownikami. Im więcej osób go sugeruje, tym lepiej! – theory

+0

Nie można znaleźć raportu o błędzie 10468062 na otwartym radarze. Naprawdę by to pomogło, więc mogłem łatwiej go podrobić. – samvermette

Powiązane problemy