2009-10-05 8 views
8

Ich habe zwei Arten von Einwänden: Orte und Geschichte. Ich versuche, Speicherorte abzurufen, die an ein beliebiges Verlaufselement angehängt sind. Daher lautet mein Abrufprädikat für den Speicherort "history. @ Count> 0". Dies funktioniert einwandfrei.NSSortDescriptor und to-many Beziehungen

Ich würde auch gerne die Location-Objekte mit einem NSSortDescriptor nach dem Datum ihrer letzten History Element, die so weit wie ich kann "Geschichte. @ Max.time", würde dies jedoch wirft folgendes zu sortieren Fehler:

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

Half plox?

+0

Ist 'location.history' ein Array/Set? (Scheint eins zu sein, aber Sie haben eine einzigartige Form.) –

+0

es ist eine zu-viele-Beziehung, die implizieren würde, dass es ist. Die singuläre Form ist meine schlechte, aber ich will mich im Moment nicht damit herumschlagen, um nichts zu brechen. –

+2

Joonas, hast du das herausgefunden? Ich bin in der gleichen Situation und bekomme denselben Fehler. Danke – kdbdallas

Antwort

0

Hier ist ein Code, die ich habe, wo ich ähnlich tun

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

Irgendeine Idee, was hätte es vielleicht behoben? Ich kann wirklich nichts in diesem Code sehen, der die Lösung hätte sein können ... –

+0

Ich bin mir nicht sicher ... Haben Sie Ihre Entity unterbewertet? Beide von mir sind (also in dem obigen Beispiel über die Entität, die ich hole und die Artikel-Entity subclassed) Ich habe nichts Spezielles in der Subklasse für Artikel, also kann ich mich nicht wirklich daran erinnern, warum ich es unterklassifiziert habe, also vielleicht Das war warum ... Ein weiterer Gedanke ist in meinen Artikeln Entity das Attribut postDate, welches ich am @max anlege habe ich im Modal eingerichtet um es zu indizieren. Vielleicht versuch es mal. Stellen Sie außerdem sicher, dass Ihr Datumswert einen Standardwert hat.Ich benutze: 1980-01-01 00:00:01 – kdbdallas

4

AFAIK, Sie collection operators, mit collections für die Schlüsselpfade Ihrer Art Deskriptoren in der Key-Value Coding Programming Guide, beschrieben verwenden müssen (NSArray, NSSet, NSDictionary).

Sie dürfen keine Auflistungsoperatoren für die Schlüsselpfade Ihrer Sortierdeskriptoren mit Abrufanforderungen verwenden (NSFetchRequest).

@kdbdallas verwendet korrekt einen Auflistungsoperator, um eine NSArray zu sortieren. Er verwendet es nicht, um den Sortierungsdeskriptor einer Abrufanforderung anzugeben.

Es wäre aber süß, wenn die Auflistungsoperatoren die Schlüsselpfade angeben würden, nach denen Abrufanforderungen sortiert werden sollen. Bitte reichen Sie diese Feature-Anfrage unter http://bugreport.apple.com/ ein. Je mehr es gemeldet wird, desto wahrscheinlicher werden sie es unterstützen.

+0

Ich habe dieses Problem mit Apple eingereicht: ID: 9758650, Titel: Collection Operators sollte mit Core Data arbeiten, Produkt: iPhone SDK, Klassifizierung: Verbesserung, Originated Date: 12-Jul -2011 12:26, ​​Status: Offen – ma11hew28

+0

Ich habe rdar: // 10468062 mit demselben Titel und einem Beispiel mit Abteilungen und Mitarbeitern eingereicht. Je mehr Leute es vorschlagen, desto besser! – theory

+0

Fehlerbericht 10468062 kann nicht auf offenem Radar gefunden werden. Es würde wirklich helfen, also könnte ich es leichter dupen. – samvermette

Verwandte Themen