2012-03-28 8 views
0

Ich muss die Werte mit einer Abrufanforderung aus meinem Core-Daten-Diagramm in ein Array, aber nicht ganz sicher, wie das geht.Setzen Sie Core Data-Werte in ein Array

Ich verwende die nach dem Abruf auszuführen:

NSString *entityName = @"Project"; // Put your entity name here 
     NSLog(@"Setting up a Fetched Results Controller for the Entity named %@", entityName); 

     // 2 - Request that Entity 
     NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName]; 

     // 3 - Filter it if you want 
     request.predicate = [NSPredicate predicateWithFormat:@"belongsToProject = %@", _selectedProject]; 

     // 4 - Sort it if you want 
     request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"dateTaken" 
                         ascending:YES 
                          selector:@selector(localizedCaseInsensitiveCompare:)]]; 
     // 5 - Fetch it 
     self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request 
                      managedObjectContext:self.managedObjectContext 
                       sectionNameKeyPath:nil 
                         cacheName:nil]; 


[self performFetch]; 

Wie Sie sehen können, ich die Werte Filterung bin, die wieder eine NSPredicate kommen mit.

Wie bekomme ich diese Werte in ein Array und kann auch einzelne Attribute für die Entität auswählen, sobald sie im Array sind, zum Beispiel die project.description oder project.name?

Dank Eimantas ich die Objekte in einem Array haben, muss ich aber noch zwei Dinge tun:

  1. Schleife durch das Array und Ausgabe der Daten in eine HTML
  2. individuell wählen Attribute aus das Array, zum Beispiel die Projektbeschreibung.

ich die folgend for-Schleife bin mit tun, um die ersten:

for (int i=0; i < [projectListArray count]; i++) 
{ 
     NSString *tmp = (NSString *)[projectListArray objectAtIndex:i]; 
} 

Dies ist jedoch die Rückkehr der Fehler:

-[Project length]: unrecognized selector sent to instance 0x1b9f20 
2012-03-28 10:48:35.160 Project App[3973:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Project length]: unrecognized selector sent to instance 0x1b9f20' 

Es scheint, als ob ich nicht Inkrementieren werden könnte ?

Antwort

1

[self.fetchedResultsController fetchedObjects] gibt das Array der abgerufenen Objekte zurück.

Update

Es ist besser schnell enumaration zu bedienen, kein for Schleife:

for (Project *project in projectListArray) { 
    NSString *projectDescription = [project valueForKey:@"description"]; 
} 

Sie bekommen die Ausnahme, weil Sie ein Objekt NSString sind Gießen, während es ein Zeiger ist zu (Ich nehme an) Project verwaltetes Objekt.

+0

Brilliant, danke Eimantas. Ich habe eine Sache, die ich versuche zu tun, wenn es dir nichts ausmacht zu helfen? Ich habe meine ursprüngliche Frage aktualisiert. – jcrowson

Verwandte Themen