2012-04-05 4 views
-1

Sorry, wenn ich jemanden verwirren, aber ich werde mein Bestes versuchen, um mein Problem zu beschreiben.Kerndaten holen Entity1 und Begrenzung von einer Variablen

Ich habe eine Entität namens Document und eine andere Entität mit dem Namen Customer das Dokument hat ein Attribut mit dem Namen CustomerID, das vom Customer-Attribut CustomerID zugewiesen wird, und es hat ein Updatedate-Attribut.

Ich möchte die 10 neuesten Dokumente, aber nur die neuesten pro CustomerID erhalten.

Antwort

0

Wenn ich Sie richtig verstanden habe, möchten Sie 10 neueste Dokumente von einem bestimmten Kunden erhalten? Das ist einfach.

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    request.entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext];//Specify the entity Name 
    request.predicate = [NSPredicate predicateWithFormat:@"customerID = %@",customerID];//Specify the ID you need 
    request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"updatedDate" ascending:YES]];//Sorted by most recent ones 
    request.fetchLimit = 10;//You'll get ten latest Documents 
    NSError *error = nil; 

latestDocuments = [managedObjectContext executeFetchRequest:request error:&error]; 

EDIT

Wie wir herausgefunden haben, dass die Aufgabe zehn letzten Dokumente zu bekommen, aber nur eine pro Kunde, sehe ich wirklich keine Möglichkeit, diese irgendwie effizient zu tun (ich meine, ohne IN Abfrage, die customerIDs enthalten, die Sie bereits abgerufen haben), aber juat, um Ihrem Kunden ein neues One-to-One-Verhältnis hinzuzufügen - nextDocument, und eine Umkehrung dazu, und nur Anfrage an die Dokumente, in denen isLatestToCustomer ist nicht Null.

+0

Entschuldigung, nicht für einen bestimmten Kunden. Holen Sie sich die 10 neuesten Dokumente, aber nur die Dokumente mit einer eindeutigen customerID. 'code' CustomerID = 1, gespeichert ein Dokument vor 2 Tagen customerID = 1, einen Tag ein Dokument gespeichert vor customerID = 2, sparte ein Dokument vor einem Tag customerID = 3, sparte ein Dokument heute ich mag Holen Sie sich die jüngste Aktivität von Dokumenten, aber nur die neuesten der einzigartigen Kunden. So wird es holen customerID = 1, Dokument gespeichert vor einem Tag customerID = 2, Dokument gespeichert vor einem Tag customerID = 3, Dokument gespeichert heute – Bassem

+0

Sie meinen, zehn neueste Dokumente, aber nur ein Dokument pro Kunde? –

+0

Yep, das klingt viel einfacher :) – Bassem