2012-09-19 25 views
6

Nel mio modello ho attributo data e l'ho impostato [NSDate date], ma ottenere con predicato comeCore Data NSPredicate per la data

NSPredicate *predicate = [NSPredicate predicateWithFormat: 
           @"date==%@ ,date]; 

rendimenti Notting. So che il problema è quando imposto lo [NSDate date] memorizza anche l'ora e NSPredicate restituisce sempre i dati vuoti. C'è un modo per convertire la parte "date==%@" per cercare solo la data?

+0

Il problema con il fare predicati con date come questa è che questo farà un paragone al millisecondo; devi avere * esattamente * lo stesso istante di tempo, non solo lo stesso giorno di calendario. –

+0

Questo "devi avere esattamente lo stesso istante di tempo" mi ha fatto pensare a questa idea per gestire il tempo in date: rendere il tempo della data tutti gli 0 giusto prima di memorizzarlo. E quando si recupera dal modello, passare un valore di data con il tempo come 0s. –

risposta

18
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date <= %@)", startDate, endDate]; 
+0

grazie per la risposta, ma ho una data (oggi). endDate dovrebbe essere domani? – Ercan

+0

sua scelta .. non dare data di fine, rimuovere la parte tat. passare solo startDate. NSPredicate * predicate = [predicato NSPredicateWithFormat: @ "(date> =% @)", startDate]; – cancerian

+0

impostazione solo startDate ha causato che se io do 2 giorni prima della data mi restituisce tutti i record tra 2 giorni prima e oggi. Ho risolto il problema aggiungendo 1 giorno alla data selezionata e utilizzato la prima risposta con endDate. – Ercan