2011-03-07 1 views
5

peut-être vous pouvez m'aider. Quel est le problème avec ce code:iOS NSDate Core Données Comparer la demande d'extraction ne fonctionne pas

-(NSMutableArray *)returnItemsWithName:(NSString *)name{ 

    NSFetchRequest *fetch=[[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity=[NSEntityDescription entityForName:@"XYZ" inManagedObjectContext:[self managedObjectContext]]; 
    [fetch setEntity:entity]; 
    NSDate *sevenDaysAgo = [appDelegate dateByAddingDays:-7 toDate:[NSDate date]]; 
NSPredicate *pred= [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"originTime >= %@", sevenDaysAgo]]; 
    [fetch setPredicate:pred]; 
    NSError *fetchError=nil; 
    NSMutableArray *fetchedObjs = [[[self managedObjectContext] executeFetchRequest:fetch error:&fetchError] retain]; 
    if (fetchError!=nil) { 
     return nil; 
    } 

    return fetchedObjs; 

} 

la ligne

fetchedObjs = [[[self managedObjectContext] executeFetchRequest:fetch error:&fetchError] retain]; 

se bloque avec l'erreur:

* Mettre fin application en raison d'une exception non interceptée 'NSInvalidArgumentException', la raison: « Impossible de analyser la chaîne de format "originTime> = 2011-02-28 21:07:37 +0000" '

Tous les objets ne sont pas nuls et aussi originDat e est un NSDate dans la base de données de CD

+0

Le nom du champ "originDate" ou "originTime" est-il le nom? – Anomie

Répondre

10

Votre problème est le suivant:

[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"originTime >= %@", sevenDaysAgo]]; 

predicateWithFormat:déjà veut une chaîne de format. C'est inutile et, comme vous l'avez constaté, c'est mal de faire ce que vous faites. Il est assez facile à corriger cependant:

[NSPredicate predicateWithFormat:@"originTime >= %@", sevenDaysAgo]; 

Cela fonctionnera très bien.

+0

est 'originTime' ici un attribut de type NSDate? Si oui, comment s'est passé le prédicat avec le format? ne devrions-nous pas utiliser la fonction 'laterDate:'? les opérateurs '>' et '<' fonctionnent-ils pour les dates? – iosMentalist