2009-10-23 7 views
0

J'ai ajouté ce qui suit à AppDelegate dans l'exemple Recettes de données de base, mais je n'obtiens aucun résultat imprimé dans la console ... des idées?iPhone dev: comment imprimer les résultats d'un fetchRequest Core Data?

#pragma mark - 
#pragma mark TESTING RETRIEVAL OF RECIPE NAMES 

- (NSArray *)allRecipes{ 
    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"name" inManagedObjectContext:self.managedObjectContext]; 
    [request setEntity:entity]; 

    NSArray *result = [[NSArray alloc] init]; 
    result = [self.managedObjectContext executeFetchRequest:request error:NULL];  

    NSManagedObject *firstObject = [result objectAtIndex:0]; 
    NSLog(@"firstObject.name: %@", [firstObject valueForKey:@"name"]); 

    } 

XCode me donne un avertissement après cette méthode: « Contrôle atteint la fin de la fonction non vide »

Je pense que cela signifie que je ne reçois pas de résultats ... ce qui est évident, parce que rien est l'impression.

+1

1. En tant que "entityForName:", vous devez fournir un nom d'entité (classe) (par exemple @ "Recipe"), et non une clé. 2. L'avertissement est dû au fait que vous ne renvoyez pas un NSArray * à l'appelant: renvoie le résultat; 3. Vous pouvez vérifier si des enregistrements sont extraits en demandant la taille de la matrice: [nombre de résultats] 4. Comment peupler le contexte avec les données initialement? – gerry3

Répondre

1

Est-ce que "nom" correspond exactement à la classe de l'entité - PAS l'attribut que vous voulez de l'entité - dans votre fichier .xcdatamodel? Vérifiez-vous que dans le délégué de l'application, les méthodes d'installation se terminent sans erreur? Avez-vous vérifié pour managedObjectContext! = Nil? Avez-vous modifié le fichier .xcdatamodel? Si vous l'avez fait depuis l'exécution du programme, vous devez soit supprimer le fichier de données du répertoire Documents du simulateur pour votre application, soit ajouter Add Model Version pour votre modèle de données. Comme dit gerry3, votre premier problème est que la fonction spécifie que vous devez retourner un tableau et que vous ne renvoyez rien.

Un autre problème est que vous récupérez les attributs de la classe "name" mais que vous utilisez à nouveau "name" comme valeurForKey. Avez-vous vraiment une entité "nom" avec l'attribut "nom"? Il est plus probable que votre entité porte un autre nom et son nom soit son attribut. Dans ce cas, vous devez modifier la méthode NSEntityDescription entityForName: argument.

Questions connexes