2010-02-16 5 views
0

J'essaye d'effectuer un fetch sur des données de base après que j'insère une entité, et j'obtiens 0 résultats. J'ai une personne Entity.And je construit une demande de récupération dans l'interface graphique DataModule avec le prédicat:NSFetchRequests renvoie 0 résultats quand il devrait retourner 1

nom == « PERSONNAME »

Juste avant de rechercher le nom i insérer et enregistrez premier. et je sais que cela fonctionne parce que je montre les noms dans une table et la coredata est sauvée après que je ferme et ouvre l'application encore.

Voici le code i codé pour l'extraction. S'il vous plaît me aider à comprendre pourquoi je reçois 0

-(Person *)findPersonByName:(NSString *)name{ 
    NSLog(@"looking for person with name: %@",name); 
    NSDictionary *subs = [NSDictionary dictionaryWithObject:name forKey:@"PERSONNAME"]; 
    NSAssert(self.managedObjectModel, @"anything wrong with managedObjectModel");//no 
    NSFetchRequest *fetch = [self.managedObjectModel fetchRequestFromTemplateWithName:@"getPersonByName" substitutionVariables:subs]; 
    NSAssert(fetch, @"anything wrong with fetch?");//no 
    NSLog(@"fetch: %@",fetch); 
    NSError *error; 
    NSArray *result = [self.managedObjectContext executeFetchRequest:fetch error:&error]; 
    NSLog(@"fetch request getQuestionsByParent: %u found (sub variables:%@, results:%@)", [result count], subs, result); 
    if (result == nil){ 
     // Deal with error... 
    } 
    else if([result count]>0){ 
     for (Person *person in result) { 
      NSLog(@"search result: %@",person.name); 
     } 
    } 
    return nil; 
} 

S'il vous plaît aider à résoudre le problème. Merci

Répondre

2

Dans votre modèle prédicat:

name == "PERSONNAME" 

devrait être:

name == $PERSONNAME 
+0

quand je crée le prédicat dans le xcdatamodel avec: nom == "$ PERSONNAME" son dosent encore travail, je ne peux pas trouver le moyen de perdre le "" autour du PERSONNAME –

+0

J'ai maintenant réalisé que j'avais besoin de l'éditer dans le "mode d'expression" après avoir créé le prédicat. Donc, ce que j'ai fait était de copier le prédicat, puis de modifier à nouveau et sélectionnez l'expression dans la liste déroulante, puis collé et changé pour: nom == $ PERSONNAME Merci Rob. –

Questions connexes